커피살인마 2022. 7. 4. 22:16
  • 두 프로세스 간 통신을 위해서는 파이프를 생성해야 함. 파이프는 프로세스에 속하는 자원이 아니고 소켓과 마찬가지로 운영체제에 속하는  자원이므로 fork함수의 호출에 의한 복사 대상이 아님. 
  • 파이프를 프로세스 사이의 통신을 위해 사용하려면 fork함수와 함께 사용해야 함.
  • 부모 프로세스에서 파이프를 생성하고 fork를 통해 자식 프로세스를 생성하면 파이프에 접근할 수 있는 파일 디스크립터들이 복사됨. 따라서 부모 프로세스와 자식 프로세스 사이의 데이터 교환이 가능해지며 자식 프로세스들끼리도 파이프를 이용하여 통신하는 것이 가능함.
int pipe(inf filedes[2]);

filedes[0] : 파이프로부터 데이터를 수신하는데 사용되는 파일 디스크립터가 저장됨. 즉 파이프의 출구.

filedes[1] : 파이프로 데이터를 전송하는데 사용하는 파일 디스크립터가 저장됨. 즉 파이프의 입구.

성공 시 0, 실패 시 -1 반환