반응형
socketpair() 시스템 호출은 소켓이 주소 없이 서로 연결된 nameless socket pair(이름없는 소켓 쌍)를 생성한다.
단방향성을 갖는 읽기/쓰기용 file descriptor 쌍을 리턴하는 pipe 시스템 호출과 유사해 보이지만, 양방향성(full-duplex)을 갖는 한쌍의 socket descriptor를 리턴한다는 것이 주된 차이점이다.
소켓 쌍으로 프로세스간 통신을 하기 위해서는...
단방향성을 갖는 읽기/쓰기용 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' 카테고리의 다른 글
다음뷰와 믹시,메타사이트 추천버튼 통합하기 (2) | 2009.09.07 |
---|---|
설치형 텍스트큐브에 구글 검색창(CSE, Custome Search Engine) 설치하기 (4) | 2009.09.04 |
블로그에 스크롤 메뉴를 달아봅시다 (3) | 2009.09.04 |
fork() vs vfork() (8) | 2009.06.14 |
분산쿼리를 위한 연결서버(LinkedServer) 구성하기 (0) | 2008.01.10 |