socketpair()와 pipe()의 다른 점?

익명 사용자의 이미지

외부 프로세스와 통신하는 방법으로 찾아본 것중에
하나는 socketpair()를 쓰고 다른 하나는 pipe()를 쓰더군요.
그 값으로 stdin/out을 가로채는 건 같은 듯한데
뭐가 다른 건가요?

from [ke'izi] where is [r]?

익명 사용자의 이미지

아주 정확한 것은 아니지만..
일반적인 것만 말씀을 드리겠습니다.

soketpair() 함수는 말 그대로 socket을 생성해서 server/client 모델로써 프
로세스간 통신을 구현하는 것입니다. 즉 일반적인 socket과 같은 개념이라고
보시면 되겠구요, pipe()는 두 프로세스간에 pipe라는 채널을 형성하는 것인데
요, 이건 주로 fork()와 연계해서 쓰이며 부모와 자식 프로세스간 통신에 쓰이
는 방식입니다. 즉, 중요한 차이는 pipe()는 관련 있는 프로세스(부모-자식)
에 쓰이고 socketpair()는 관련 없는 프로세스 간에 통신을 위해서 쓰인다고
보시면 되겠네요.

purewell의 이미지

관련 없는 프로세스간 통신이기 보단, 둘 다 두개의 fd를 반환하는데, pipe는 단방향성이고, socketpair는 양방향성이 아닐까요?
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz