Development Tip

파이프와 소켓의 차이점은 무엇입니까?

yourdevel 2021. 1. 7. 20:08
반응형

파이프와 소켓의 차이점은 무엇입니까?


몇 가지 답변을 찾았지만 구체적으로 Windows 시스템과 관련된 것 같습니다. 그래서 제 질문은 파이프와 소켓의 차이점은 무엇이며 언제 / 어떻게 다른 것을 선택해야합니까?


파이프와 소켓의 차이점은 무엇이며 언제 / 어떻게 다른 것을 선택해야합니까?

파이프와 소켓은 모두 바이트 스트림을 처리하지만 다른 방식으로 처리합니다.

  • 파이프는 특정 호스트 내에서만 존재하며 가상 파일 간의 버퍼링 또는 해당 호스트 내에서 프로세스의 출력 / 입력 연결을 나타냅니다. 파이프 내에는 패킷 개념이 없습니다.
  • 소켓은 IPv4 또는 IPv6을 사용하여 통신을 패킷 화합니다. 그 통신은 localhost 이상으로 확장 될 수 있습니다. 소켓의 다른 끝점은 동일한 IP 주소를 공유 할 수 있습니다. 그러나 그렇게하려면 서로 다른 TCP / UDP 포트에서 수신해야합니다.

사용법 :

  • 파이프 사용 :
    • 특정 서버 내에서 데이터를 파일로 읽고 쓸 때. C를 사용하는 경우 당신 read()write()파이프에.
    • 한 프로세스의 출력을 다른 프로세스의 입력에 연결하려는 경우 ... popen () 참조
  • 소켓을 사용하여 서로 다른 IPv4 / IPv6 끝점간에 데이터를 보냅니다. 종종 이것은 서로 다른 호스트간에 발생하지만 소켓은 동일한 호스트 내에서 사용될 수 있습니다.

BTW, netcat 또는 socat사용 하여 소켓을 파이프에 연결할 수 있습니다 .


Mike가 제공 한 답변을 완성하려면 POSIX 호환 운영 체제에서 사용할 수있는 UNIX 도메인 소켓의 존재를 언급하는 것이 중요합니다. 사용 시맨틱 측면에서 "일반"인터넷 소켓과 매우 유사하지만, 순전히 머신에 국한되어 있으며 (물론 인터넷 소켓도 로컬로 작동 할 수 있습니다) 따라서 거의 파이프처럼 작동합니다. 거의 UNIX 파이프는 정의상 단방향이기 때문입니다.

파이프 및 FIFO (명명 된 파이프라고도 함)는 단방향 프로세스 간 통신 채널을 제공합니다. 파이프에는 읽기 끝과 쓰기 끝이 있습니다. 파이프의 쓰기 끝에 기록 된 데이터는 파이프의 읽기 끝에서 읽을 수 있습니다. ( 맨 페이지 pipe (7) 에서 발췌 )

UNIX 도메인 소켓은 데이터 외에 파일 설명자 전송도 허용하므로 매우 특이한 기능 이 있습니다. 이런 방식으로 권한이없는 프로세스는 설명자가 소켓을 통해 전송 된 모든 파일에 액세스 할 수 있습니다. Wikipedia에 따르면이 기술은 ClamAV 바이러스 백신 검색 데몬에서 사용됩니다.

참조 URL : https://stackoverflow.com/questions/18568089/whats-the-difference-between-pipes-and-sockets

반응형