파이프뿐만 아니라 소켓에도 splice()/tee()를 사용할 수 있나요?

파이프뿐만 아니라 소켓에도 splice()/tee()를 사용할 수 있나요?

Linux에서는 시스템 호출 splice(2) 및 tee(2)를 사용하여 두 파일 설명자 간에 데이터를 전송합니다. 문서에 따르면 파일 설명자 중 하나 또는 둘 다 파이프여야 합니다. 왜? 소켓과 함께 사용할 수 있습니까? 현재 작동합니까? 아니면 커널을 수정해야 합니까?

답변1

이제 파이프 버퍼(Linux의 경우)는 서로 다른 동물이며 커널 네트워킹을 끌어옵니다. 이를 AF_LOCAL소켓으로 제한하면 구현이 단순화되지만 유효성 검사가 복잡해지며 익명 파일 버퍼가 아닌 네트워크 버퍼 관리 하위 시스템을 통해 할당 및 매핑을 처리해야 할 수도 있습니다.

관련 정보