可以epoll
(在Linux上)對常規文件有用嗎?我知道它主要用於套接字,但只是想知道。常規文件上的Epoll
15
A
回答
11
不是。 epoll
僅適用於文件描述符,這些文件描述符通常會在讀/寫時顯示阻塞行爲,如管道和套接字。正常的文件描述符將總是或多或少地立即返回結果或文件結束,因此epoll
不會對它們做任何有用的操作。
11
我認爲,這將在epoll_ctl失敗,EPERM:
EPERM The target file fd does not support epoll.
如果文件沒有poll()
接口。
實際的代碼是http://lxr.linux.no/#linux+v3.1/fs/eventpoll.c#L1373
1373 /* The target file descriptor must support poll */
1374 error = -EPERM;
1375 if (!tfile->f_op || !tfile->f_op->poll)
1376 goto error_tgt_fput;
1377
相關問題
- 1. 常規文件上的Kqueue
- 2. 什麼是unix上的常規文件
- 3. epoll異常處理
- 4. select.select()與常規文件
- 5. 用於上傳常規文件的輸入組件?
- 6. epoll fd和pmoll上的epoll_wait
- 7. iPhone手機主頁:照片上傳爲常規文件上傳
- 8. 常規組件
- 9. Linux:非常規文件的mmap()
- 10. 什麼是Java中的「常規文件」?
- 11. C#:生成常規文件的機制
- 12. 如何在常規文件上生成POLLPRI事件?
- 13. 複製epoll文件描述符
- 14. epoll文件描述符操作
- 15. 如何爲套接字或epoll事件分配上下文
- 16. gradle這個任務和常規文件
- 17. Shell腳本搜索常規文件
- 18. cp:無法創建常規文件:
- 19. awk,bash或python轉換常規文件?
- 20. 常規更新配置文件
- 21. 命名管道常規文件
- 22. Netbeans:在常規Java類文件上使用GUI Builder
- 23. 在常規磁盤文件上使用select like函數
- 24. 如何將Java多文件上傳程序到常規
- 25. 如何檢查文件是否是C++中的常規文件?
- 26. epoll返回0事件
- 27. 短耳在Linux上攤位的epoll()
- 28. 文件上的重寫規則
- 29. rsync打印「跳過非常規文件」,看起來是一個常規目錄
- 30. 有條件的CSS文件不覆蓋常規的CSS
也就是說,它的功能,但毫無意義:「這項調查()函數應支持常規文件...常規文件應始終輪詢TRUE閱讀和寫作。」 http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html epoll(4)手冊頁說:「當用作Level Triggered接口時,epoll一定是一個更快的輪詢(2),並且可以在任何後者使用的地方使用,因爲它共享相同的語義。「因此,正如暮色說的那樣,它不會做任何有用的事情。 – mkj
這是如此愚蠢和錯誤。內核掛起的原因可能很多,從磁盤啓動(如果睡着)到網絡掛載共享/驅動器的網絡滯後。任何類型的設備交互都可能導致IO掛起。選擇/ epoll/poll/kqueue應該與任何文件描述符一起工作,並且任何文件描述都應該允許非阻塞。 – Rahly
@Rahly這是不可能的。內核事先並不知道寫入文件是否會阻塞 - 與套接字或管道不同,文件系統寫入的緩衝區並不專用於單個FD,因此無法保證它們可用於特定進程。 – duskwuff