관계와 방향 결정
단방향 stream이면 pipe, 양방향이나 네트워크 경계면 socket을 고려한다.
프로세스는 주소 공간이 분리되어 있어 직접 메모리를 공유하지 않는다. 파이프, 메시지 큐, 공유 메모리, 소켓은 서로 다른 비용과 동기화 조건을 가진다.
단방향 stream이면 pipe, 양방향이나 네트워크 경계면 socket을 고려한다.
byte stream은 메시지 경계를 자동으로 보존하지 않으므로 length framing 같은 규칙이 필요하다.
메모리만 공유하면 race condition이 생기므로 semaphore나 mutex 같은 동기화가 필요하다.
pipe(fd);
// child writes fd[1], parent reads fd[0]
// both close unused ends