socketpair 와 pipe 를 통한 프로세스간 통신의 차이점
2009/07/31 09:00
IT 이야기/IT Tech
socketpair() 시스템 호출은 소켓이 주소 없이 서로 연결된 nameless socket pair(이름없는 소켓 쌍)를 생성한다.
단방향성을 갖는 읽기/쓰기용 file descriptor 쌍을 리턴하는 pipe 시스템 호출과 유사해 보이지만, 양방향성(full-duplex)을 갖는 한쌍의 socket descriptor를 리턴한다는 것이 주된 차이점이다.
따라서 pipe를 이용하여 프로세스간 통신을 하기 위해서는, 두개의 pipe를 생성 각각을 단방향 전송 용도로 사용한다.
pipe(파이프)를 사용한 프로세스간 통신 구현
① 두번의 pipe 호출로 pipe #1, pipe #2 를 생성
※ 각각의 pipe에 대하여 읽기용 file descriptor 와 쓰기용 file descriptor가 리턴된다.
② fork 를 수행
③ 부모 프로세스는 pipe #1 의 읽기용 file descriptor를 닫음(pipe #1은 쓰기 용도임)
④ 부모 프로세스는 pipe #2 의 쓰기용 file descriptor를 닫음(pipe #2는 읽기 용도임)
⑤ 자식 프로세스는 pipe #1 의 쓰기용 file descriptor를 닫음(pipe #1은 읽기 용도임)
⑥ 자식 프로세스는 pipe #2 의 읽기용 file descriptor를 닫음(pipe #2는 쓰기 용도임)
⑦ 부모 프로세스에서 자식 프로세스로의 데이터 전송은 pipe #1을 통하고, 반대는 pipe #2를 통한다.
※ 각각의 pipe에 대하여 읽기용 file descriptor 와 쓰기용 file descriptor가 리턴된다.
② fork 를 수행
③ 부모 프로세스는 pipe #1 의 읽기용 file descriptor를 닫음(pipe #1은 쓰기 용도임)
④ 부모 프로세스는 pipe #2 의 쓰기용 file descriptor를 닫음(pipe #2는 읽기 용도임)
⑤ 자식 프로세스는 pipe #1 의 쓰기용 file descriptor를 닫음(pipe #1은 읽기 용도임)
⑥ 자식 프로세스는 pipe #2 의 읽기용 file descriptor를 닫음(pipe #2는 쓰기 용도임)
⑦ 부모 프로세스에서 자식 프로세스로의 데이터 전송은 pipe #1을 통하고, 반대는 pipe #2를 통한다.

소켓 쌍으로 프로세스간 통신을 하기 위해서는...
① 한번의 socketpair 호출로 두개의 nameless socket 을 생성(즉, 두개의 socket descriptor가 리턴됨)
② fork 수행
③ 부모 프로세스는 socket descriptor #1 을 닫음
④ 자식 프로세스는 socket descriptor #2 를 닫음
⑤ 부모 프로세스는 데이터의 송수신을 socket descriptor #2를 이용함
⑥ 자식 프로세스는 데이터의 송수신을 socket descriptor #1을 이용함
② fork 수행
③ 부모 프로세스는 socket descriptor #1 을 닫음
④ 자식 프로세스는 socket descriptor #2 를 닫음
⑤ 부모 프로세스는 데이터의 송수신을 socket descriptor #2를 이용함
⑥ 자식 프로세스는 데이터의 송수신을 socket descriptor #1을 이용함

'IT 이야기 > IT Tech' 카테고리의 다른 글
| 다음뷰와 믹시,메타사이트 추천버튼 통합하기 (12) | 2009/09/07 |
|---|---|
| 설치형 텍스트큐브에 구글 검색창(CSE, Custome Search Engine) 설치하기 (4) | 2009/09/04 |
| 블로그에 스크롤 메뉴를 달아봅시다 (6) | 2009/09/04 |
| socketpair 와 pipe 를 통한 프로세스간 통신의 차이점 (17) | 2009/07/31 |
| fork() vs vfork() (8) | 2009/06/14 |
| 분산쿼리를 위한 연결서버(LinkedServer) 구성하기 (0) | 2008/01/10 |
제글이 마음에 드셨다면, 망설이지 말고 RSS로 무료구독하세요. ^^ 
|
|
|
|
|






이놈에 IPC랑 쓰레드는 언제봐도 머리가 아파요 ;ㅅ; ㅎㅎ
네. 맞아요. 저도 볼때마다 책 찾아본답니다. ㅎㅎ
매도 먼저 맞는 게 낫다
당신은 팹, 훌륭한 문서입니다
좋은 일을 나의 친구를 계속, 이거 정말 끝내 준다
당신은 전체에 서있다면 당신은 파고있어, 당신은 파고를 중지해야합니다
멋진 작품을 계속
체크 아웃하고 싶습니다.
저는 소고기를 먹지 않습니다.
감사합니다.
저는 소고기를 먹지 않습니다.
무슨?
누구?
좋은 아침입니다.
좋습니다, 그것을 사겠습니다
언제?
이해가 안갑니다.