2013-02-10 3 views
0

두 개의 파이프 또는 소켓을 연결할 수 있는지 궁금합니다. 두 개의 파이프/소켓 쌍이 있다고 가정 해 봅시다. 첫 번째 파일에는 두 개의 파일 디스크립터 A와 B가 있고, 두 번째 파일 디스크립터에는 C와 D 두 개의 파일 디스크립터가있다. A와 B에서 데이터를 읽을 수 있도록 B와 C를 연결할 수 있는가? 그렇다면 다른 형식으로 B를 읽고 사용자 공간에서 C에 쓰는 것일까 요?두 개의 파이프/소켓을 연결할 수 있습니까?

감사합니다.

답변

1

사용자 공간에 데이터를 복사하지 않고 한 소켓에서 읽고 다른 장치에 쓰고 싶다면 http://linux.die.net/man/2/sendfile을보십시오. 꽤 최근의 리눅스가 필요합니다.

+0

사실 저는 FreeBSD를 사용하지만 구현되었습니다. 나는 이것에 관해 읽을 것이다. 감사. –

+1

예, 사용자 공간에 복사하지 않고 한 파일 디스크립터에서 다른 파일 디스크립터로 데이터를 보낼 수 있습니다. 그러나 두 개의 파이프/소켓을 영구적으로 연결하지는 않습니다. 따라서 C-D 파이프를 통해 데이터를 전달하는 대신 B 파일 디스크립터를 다른 프로세스로 보냅니다. 많은 감사합니다. –

+1

그러면 sendfile이 아니라 원하는 splice http://linux.die.net/man/2/splice입니다. 그러나 그것이 FreeBSD에 있는지 나는 모른다. – Scout

관련 문제