파일 설명자를 다른 파일 설명자에 직접 바인딩하는 시스템 호출이 있습니까?

파일 설명자를 다른 파일 설명자에 직접 바인딩하는 시스템 호출이 있습니까?

read() 및 write() 루프는 내가 찾고 있는 것만큼 좋을 수도 있지만 여전히 비슷한 상황이 있습니까? 아니면 예상하지 못한 장애물로 인해 구현이 불가능합니까? 궁금해

답변1

"한 fd의 전체 내용을 다른 fd에 복사"하는 전통적인 Unix 시스템 호출은 없습니다. "블록 읽기, EOF인 경우 중지, 블록 쓰기" 루프는 항상 사용자 공간에 씁니다.

최근에는 단일 시스템 호출에서 읽기-쓰기 루프와 동등한 작업을 수행할 수 있도록 하는 sendfile(2) 및 splice(2)와 같은 일부 함수가 추가되었습니다. 이를 사용하면 이식성을 희생하면서 성능이 향상됩니다. (sendfile은 Unices마다 다른 매개변수를 취하므로 #ifdef가 필요합니다)

관련 정보