Programing

유닉스 도메인 소켓 VS 명명된 파이프?

c10106 2022. 4. 17. 12:10
반응형

유닉스 도메인 소켓 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

반응형