pipe 함수


<aside> 💡 파이프(Pipe)란 프로세스간 통신을 할 때 사용하는 커뮤니케이션의 한 방법이다.

</aside>

pipe 란?


pipe를 이용하면 2개의 파일 지시자를 생성할 수 있다. 2개가 생성되는 이유는 읽기 전용과 쓰기 전용의 파이프를 생성하기 위함이다.

filedes[0]는 읽기 전용, filedes[1]은 쓰기 전용의 파이프로 사용된다. 이들 파이프는 주로 부모 프로세스와 자식 프로세스 간의 통신을 위한 목적으로 사용된다.

pipe()


#include <unistd.h>

int pipe(int filedes[2]);

pipe 함수는 unistd.h 헤더 파일에 존재한다.

pipe 함수가 성공적으로 호출되었다면 0, 실패했다면 -1을 반환한다.

인자 fd는 2개의 원소가 있는 배열이다. 2개의 원소를 사용하는데는 이유가 있다.

fd[1]는 쓰기, fd[0]는 읽기

fd[1]는 쓰기, fd[0]는 읽기

파이프는 커널영역에 생성되어 파이프를 생성한 프로세스는 파일 디스크립터만 갖고 있게 된다.

파일디스크립터 fd[1]은 쓰기용 파이프, fd[0]는 읽기용 파이프이다. 그러니 만약 데이터를 fd[1]에 쓰게 된다면 fd[0]으로 그 데이터를 읽을 수 있는 것이다.