pipe는 두 프로세스 사이에서 한 방향으로 통신할 수 있도록 지원한다.
쉘에서는 한 명령의 표준 출력을 다음 명령에서 표준 입력으로 받아 수행한다.
사용 가능 함수
pipe 함수로 통신하는 과정
- pipe 함수를 호출해 파이프에 사용할 fd를 얻는다. 파이프도 파일의 일종이므로 파이프를 읽고 쓸 수 있는 fd가 필요한데, 이를 pipe 함수가 생성해 준다.
- fork 함수를 수행해 자식 프로세스를 생성한다. 이때 pipe 함수에서 생성한 fd도 자식 프로세스로 복사된다. 같은 fd를 부모, 자식 프로세스 둘다 가지고 있는 것.
- 파이프는 단방향 통신이므로 부모→자식 인지 부모←자식 인지 통신 방향을 정해야 한다. 예를 들어 부모프로세스에서 쓰고 자식프로세스에서 읽는다면 부모프로세스는 읽기용 fd를 닫고, 자식 프로세스는 쓰기용 fd를 닫는다.
- 만약 파이프의 쓰기 부분이 닫혀 있을때 읽으려고 한다면 0이나 EOF리턴,
읽기 부분이 닫혀 있을때 쓰려한다면 SIGPIPE 시그널이 발생한다.