sendfile()
은 컴퓨터 A에서 컴퓨터 B로 데이터를 가져 오기 위해 "파일"설명자에서 "소켓"설명자로 데이터를 전송하는 데 사용할 수 있습니다. "socket"디스크립터에서 비슷한 zero-copy 의미론을 가진 파일에 대한 수신 끝? 나는 sendfile()
이 도움이되지 않는다고 생각한다. 왜냐하면 sendfile()
은 "페이지/버퍼"캐시가 될 데이터 소스를 필요로하기 때문이다. 내 이해가 맞습니까? 이 상황에서 splice()
도움이 될 수 있습니까?sendfile() 및 splice()에 대한 이해
6
A
답변
11
이 경우 sendfile
의 제한 사항에 대해 정확합니다. 예, splice
도 도움이 될 수 있지만 사소하지는 않습니다. splice
은 소스 또는 대상 파일 설명자 중 적어도 하나가 파이프 여야합니다. 따라서 소켓에서 일반 파일 설명자로 직접 splice
을 보낼 수는 없습니다.
개념적으로, 당신이 그것을 작동하게 할 수있는 것입니다 :
- 설정은 인바운드 소켓 FD와 출력 파일 FD 일반적
- 루프에서
pipe(2)
- 와 파이프를 만드는 것처럼 : 파이프의 판독 측으로부터
splice
- 쓰기와 파이프의 기록 측의 소켓에서
- 판독 토륨 또한
splice
- 판독 토륨 또한
를 반복하여 모든 데이터를 읽을 때까지 마지막 단계에와 전자 파일.
Zero-Copy in Linux with sendfile() and splice()에는이 기술이 구현되어 있습니다.
관련 문제
- 1. splice에 대한 비파괴적인 대안?
- 2. bset 및 bclr에 대한 이해
- 3. Apache2의 X-Sendfile 및 VERY 큰 파일
- 4. Jboss AS7, APR 네이티브 커넥터 및 sendfile
- 5. Tomcat NIO 및 Sendfile 파일 정리 보내기
- 6. Jruby/JRack Tomcat의 Sendfile
- 7. 하스켈에 대한 이해
- 8. Android에서 게임 시작 및 중지에 대한 이해
- 9. OpenSSO/AM 및 Fedlet에 대한 자습서/이해
- 10. IIS 및 웹 서비스에 대한 일반적인 이해
- 11. CoreData에서 객체 생성 및 비교에 대한 이해
- 12. 대기열 동기화 및 구현에 대한 이해
- 13. Apache/PHP에서 X-Sendfile 사용
- 14. 리눅스 스케줄러에 대한 이해
- 15. TreeMap에 대한 이해
- 16. MySql에 대한 이해 Auto_Increment
- 17. 'this'에 대한 IE의 이해
- 18. 데이터베이스의 트랜잭션에 대한 이해
- 19. Symfony2 서비스에 대한 이해
- 20. CSRF 토큰에 대한 이해
- 21. 해시 코드에 대한 이해
- 22. 프로그래밍 할당에 대한 이해?
- 23. will_paginate 인수에 대한 이해
- 24. NSString에 대한 initWithBytes 이해
- 25. PHP 상속에 대한 이해
- 26. 목록보기에서 notifyDataSetChanged에 대한 이해
- 27. UINavigationController에 대한 깊은 이해
- 28. composer.phar 오류에 대한 이해
- 29. DirectoryInfo.Exists에 대한 부울 이해
- 30. NHibernate에 대한 ICriteria 이해
2.6.33 이후 sendfile의 out_fd는 소켓뿐만 아니라 모든 파일 설명자가 될 수 있습니다. – ldrg
4.2 이후로는'splice()'와 동일합니다. – technosaurus