유닉스 도메인 소켓 VS 명명된 파이프?
소켓이라는 유닉스를 보고 파이프라는 이름이 붙은 줄 알았다.나는 이름 파이프를 보았지만 별 차이가 없었다.나는 그것들이 다르게 초기화된 것을 보았지만 그것만이 눈에 띈다.둘 다 C 쓰기/읽기 기능을 사용하며 AFAIK와 동일하게 작동한다.
유닉스 도메인 소켓과 명명된 파이프의 차이점은 무엇인가?내가 언제 다른 하나를 고를까?기본적으로 어느 것을 사용해야 하는가(예: Deque, list 또는 필요한 경우 다른 것을 사용하는 것보다 C++에서 벡터를 기본적으로 사용하는 방법)?
UNIX 도메인 소켓은 일반적으로 명명된 파이프보다 더 유연하다.이들의 장점 중 일부는 다음과 같다.
- 통신하는 세 개 이상의 프로세스(예: 여러 클라이언트 프로세스를 연결할 수 있는 서버 프로세스)에 사용할 수 있다.
- 그것들은 양방향이다.
- 프로세스 간 커널 인증 UID/GID 자격 증명 전달을 지원한다.
- 프로세스 간 파일 설명자 전달을 지원한다.
- 그들은 패킷과 시퀀싱된 패킷 모드를 지원한다.
이러한 기능을 많이 사용하려면send()
/recv()
보다 시스템 호출의 가족write()
/read()
.
한 가지 차이점은 명명된 파이프가 일방통행이기 때문에 쌍방향 통신을 하려면 그 중 두 개를 사용해야 할 것이다.물론 소켓은 양방향이다.하나의 변수 대신 두 변수(즉, 하나의 소켓 대신 두 개의 파이프)를 사용하는 것이 조금 더 복잡해 보인다.
또한, 위키백과 기사는 다음과 같은 점에서 꽤 명확하다: "파이프는 바이트 스트림이나 데이터그램 시퀀스로만 작성될 수 있는 반면,
명명된 파이프는 사실 양방향이지만 반이중적이다.이것은 통신이 끝 A에서 끝 B로 갈 수도 있고, 끝 B에서 끝 A로 갈 수도 있지만 동시에 둘 다 갈 수는 없다는 것을 의미한다.
참조URL: https://stackoverflow.com/questions/9475442/unix-domain-socket-vs-named-pipes
'Programing' 카테고리의 다른 글
무료()가 내 어레이의 길이를 알고 있다면 왜 내 코드로 요청할 수 없는가? (0) | 2022.04.17 |
---|---|
Java 클라이언트에서 서버의 자체 서명 SSL 인증서 수락 (0) | 2022.04.17 |
JVM에서 기본 로캘을 설정하는 방법 (0) | 2022.04.17 |
vuej에서 클릭한 버튼에만 로딩을 추가하려면 어떻게 해야 하는가? (0) | 2022.04.17 |
jQuery를 사용하여 Vue.js 양식에서 값 설정 (0) | 2022.04.17 |