pipe는 두 프로세스 사이에서 한 방향으로 통신할 수 있도록 지원한다.

쉘에서는 한 명령의 표준 출력을 다음 명령에서 표준 입력으로 받아 수행한다.

사용 가능 함수


pipe 함수로 통신하는 과정


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