문제
IPC와 UNIX 도메인 소켓과 명명 된 파이프의 다른 점은 무엇입니까?
나는 다양한 책에서 모호한 정의를 얻었지만 어디에서 사용해야하는지 명확하게 얻을 수 없었습니다.
해결책
서로 통신하는 두 프로세스는 IPC의 형태로 간주 될 수 있습니다.
예를 들어:
- 이름없는 파이프 (cat file.txt | grep foo) 또는 명명 된 파이프
- 유닉스 도메인 소켓
- TCP 또는 UDP 소켓
- Linux의 NetLink 소켓
- 메모리 매핑 파일과 같은 다양한 공유 메모리 메커니즘
- 다음과 같은 고속 메시지 전달 Zeromq
다른 팁
QRDL이 언급 한 바와 같이, UNIX-Domain 소켓과 명명 된 파이프는 모두 IPC 메커니즘입니다.
이 두 가지 중에서 명명 된 파이프는 작업하기가 더 간단하지만 Unix-Domain 소켓보다 훨씬 덜 유연합니다. 예를 들어, 각 쓰기 프로세스에 대해 하나 이상의 읽기 과정을 기대하면 UNIX- 도메인 소켓이 필수입니다. 쓰기 과정을 실행하는 동안 읽기 과정이 중지되고 시작될 것으로 예상되면 UNIX- 도메인 소켓이 필요합니다.
IPC 의지합니다 프로세스 간 통신. UNIX 도메인 소켓과 명명 된 파이프는 Wikipedia에 설명 된 두 가지 IPC 메커니즘에 불과합니다.
질문에 집중해 주셔서 감사합니다. 업데이트 된 기능은 몇 가지 있습니다.
도메인 소켓에서 실제 통신 (데이터 교환)은 파일 시스템을 사용하지 않고 커널 메모리의 버퍼를 사용합니다. 기본적으로 전이중 모드입니다.
이름이 지정된 파이프는 액세스 포인트로 식별되며, 데이터 처리를 위해 파일 시스템에 보관 된 파일입니다. 기본적으로 명명 된 파이프는 차단 된 읽기 및 쓰기 작업을 지원합니다. 그러나 O_NONBLOCK 플래그를 열면서 명명 된 파이프가 비 블로킹 작업을 지원할 수 있습니다. 명명 된 파이프는 읽기 전용 또는 쓰기 전용을 열어야합니다. 일방 통화 채널 인 반 듀플렉스이기 때문에 읽기 쓰기를 위해 열어서는 안됩니다.