2015-01-04 5 views
0

저는 리눅스 쉘에서 파이핑을 알고 있습니다.stdin, stdout, stderr 이외의 fd의 입출력을 리다이렉트 할 수 있습니까

특정 파일 (또는 소켓)에서 읽는 것으로 알고있는 실행 파일이 있다고 가정하면 stdin/out/err과 같이 쉘 파이핑을 사용하여이 파일의 출력/입력을 리디렉션 할 수 있습니다 ?

감사합니다.

+0

'이 파일의 출력/입력'은 무엇을 의미합니까? – alijandro

+0

@alijandro 즉, 프로그램에서 fread를 사용하여 특정 파일을 읽으면 파일 출력을 리디렉션 할 수 있으므로 파일 내용 자체는 아니지만 내가 제공하는 문자열이거나 다른 파일의 입력입니다. file – Gadol21

+0

쉘 리다이렉션과 같은 쉬운 수단으로는 불가능합니다. * nix에있는 거의 모든 프로그램은 기본적으로이 파일을 처리하도록 설계 되었기 때문에 입력을 프로그램으로 리디렉션하는 것은 쉽지만 표준 입력 _을 읽지는 않지만 대신 (아마도 알려지지 않은) 파일을 읽는다면 꽤 많이 벗어납니다. 행운의. 그러나 (모든 파일 설명자가 액세스 할 수있는)'/ proc'와 관련된 일종의 끔찍한 해킹이 가능할 수도 있습니다. 그러나 그것은 쉽지도, 귀여울 수도, 이식성도 없습니다. – Damon

답변

0

예, 물론입니다. 한 가지 방법은 dup() 또는 dup2()으로 전화하고 원본 파일을 닫습니다(). 물론 원본 프로그램을 수정하려면 소스 코드가 필요합니다.