2011-09-18 6 views
-3

저는 UNIX 파이프 통신을 처음 접했고 이에 대한 이해를 돕기 위해 도움이 필요합니다. 파이프를 만들고이 파이프를 통해 상위 프로세스와 통신하는 하위 프로세스를 포킹해야합니다. 내 질문은UNIX 파이프 및 파일 설명자 이해

입니다. a) 왜 자식 프로세스 당 파이프가 필요합니까?

b) 파일 설명자는 실제로 무엇이며 파이프마다 하나씩 만들어야합니까?

c) StdIn과 StdOut이이 모든 작업을 수행하려면 어떻게해야합니까?

+2

많은 질문이 있습니다. 아마도 각각 하나씩 나누어봤을까요? UNIX/Linux 관련 질문에 대해서는 unix.stackexchange.com을 사용해보십시오. – tjameson

답변

4

왜 자식 프로세스 당 파이프가 필요합니까?

단일 파이프에는 두 개의 끝점 만 있기 때문에. 모든 자식들에게 하나의 파이프를 공유하려고 시도하면 어떤 자식 프로세스가 주어진 출력을 생성했는지 알 수 없습니다.

실제로 파일 설명자는 무엇입니까?

운영 체제가 보유한 열린 파일 테이블에있는 항목입니다.

파이프 당 [파일 설명자]를 만들어야합니까?

파이프의 양쪽 끝을 포함하여 파일과 비슷한 개체가 열려있는 프로세스는 파일과 유사한 개체와 통신 할 수있는 파일 설명자가 있어야합니다. 사실, 파일을 가리키는 파일 설명자 테이블에 항목을 가지고 정확히 파일이 열리는 것은입니다.

stdin과 stdout은이 작업과 어떤 관련이 있습니까?

stdin은 파일 설명자 테이블에서 항목 0입니다. stdout은 항목 1입니다. 실행중인 프로세스가 데이터를 읽고 파일 설명자 0과 1에 쓰면 파이프가 연결되기를 원할 수 있습니다.