socat을 사용하여 UNIX 소켓을 생성하고 데이터를 보내지만 소켓에 연결된 다른 socat 인스턴스가 없으면 어떻게 됩니까?
많은 양의 데이터가 UNIX 소켓에 기록되었지만 읽혀지지 않으면 어떻게 됩니까? 버퍼 오버플로가 발생합니까? 링버퍼인가요?
답변1
Unix 소켓은 안정적입니다. 리더가 읽지 않으면 작성자가 차단됩니다. 소켓이 데이터그램 소켓인 경우 각 쓰기는 읽기와 쌍을 이룹니다. 소켓이 스트림 소켓인 경우 커널은 기록기와 판독기 사이에 일부 바이트를 버퍼링할 수 있지만 버퍼가 가득 차면 기록기가 차단됩니다. 버퍼를 읽기 전에 리더가 연결을 닫으면 데이터가 버퍼링되지 않는 한 데이터가 삭제되지 않습니다.