我有一個內存區域,其中包含我想通過以太網發送到另一個客戶端的數據。爲了增加吞吐量,目前我在擺弄sendfile API而不是傳統的發送/寫入API。但據我所知,sendfile API需要輸入文件描述符,但我所擁有的只是原始內存數據。那麼爲了使用sendfile API我該怎麼做?發送文件沒有文件描述符
1
A
回答
3
的sendfile()
的主要好處是,它允許你避免不必首先read()
數據從一個文件描述符到內存中,然後才能send()
它的開銷。如果要發送的數據已經在內存中,則不需要sendfile()
。使用奇怪的解決方法將數據移動到文件中(如mmap()
)只會降低性能。
-1
相關問題
- 1. 創建GNU C文件描述符沒有文件句柄
- 2. EXEC沒有發現(因爲文件描述符)
- 3. 文件描述符和打開文件
- 4. webservice描述符文件
- 5. 關閉文件描述符
- 6. 創建文件描述符
- 7. Linux open()文件描述符
- 8. 寫作文件描述符
- 9. 實現文件描述符
- 10. 文件描述符輪詢
- 11. c strcpy文件描述符
- 12. 沒有單獨的描述符XML文件的Maven Assembly插件
- 13. 如何使用sdbus發送Unix文件描述符?
- 14. Sendmsg在發送文件描述符時不起作用
- 15. SOCKET文件描述
- 16. 套接字描述符與文件描述符
- 17. 文件描述符和文件指針有什麼區別?
- 18. 沒有得到輸出的printf文件描述符ç
- 19. popen後重復的文件描述符
- 20. 創建備份文件描述符?
- 21. 使用文件描述符過程
- 22. 錯誤的文件描述符
- 23. 控制文件描述符的準備
- 24. pthread_detach上的錯誤文件描述符
- 25. epoll文件描述符操作
- 26. 文件描述符用XML編寫
- 27. 的httperf文件描述符限制
- 28. bash的文件描述符重定向
- 29. 用文件描述符調用dlopen?
- 30. 主題和文件描述符
創建一個文件?這個名字告訴你它做了什麼;如果你沒有文件,'sendfile()'不適用,是嗎? – 2014-09-03 02:49:48
我看,以前我認爲有一種方法可以打開特定的內存區域並將文件描述符傳遞給sendfile。那麼你認爲哪一個更快? 1. mmap數據區域,然後使用發送API重複讀取內存,直到發送所有數據。 2.安裝ramdisk,使用內存中的數據創建原始文件,然後使用sendfile API發送。 – czteoh 2014-09-03 03:29:24
好的;讓我退後一步 - 周圍有一些非常複雜的接口,'sendfile()'可能就是其中之一。但是,先驗,並根據名稱,你需要一個文件。它不是POSIX標準功能;它是一個Linux擴展。 – 2014-09-03 03:39:37