728x90

프로세스 별로 별도의 메모리 공간을 가지기 때문에 기본적으로 프로세스 간의 데이터 공유는 불가능 하다.

 

solution

OS가 별도의 메모리 공간(프로세스들이 접근 가능한)을 만들어 준다.

 

step

1. 부모프로세스가 os에게 자식프로세스와 통신할 것이라고 한다

2. os는 부모프로세스와 자식프로세스가 공유 가능한 메모리 공간(파이프)를 생성하고 파이프에 읽고 쓰기가 가능한 파일스크립터를 부모프로세스에게 제공한다.

3. 자식프로세스가 생성된다.

4. 자식프로세스는 부모프로세스의 모든 걸 복사하기 때문에 자식프로세스 역시 읽고 쓰기가 가능한 파일스크립터를 얻는다.

5.이로써 읽고 쓰기가 가능한 파일스크립터를 이용한 파이프 사용을 통해 부모-자식간에 통신이 가능하다.

 

 

pipe()

파이프 생성

송수신 가능한 디스크립터 반환

 

주의점

파이프가 하나 일 때 부모 프로세스는 본인이 파이프에 wirte하고 본인이 직접 read가 가능하기 때문에 문제가 된다.

이를 해결하기 위해 애초에 부모->자식, 자식->부모용 파이프를 두개 생성하여 사용하는 것이 일반적이다.

728x90

+ Recent posts