我正在使用popen
在我的應用程序中打開另一個進程並解析其輸出。我希望在計劃完成任何輸出後立即收到通知。目前,我的程序中的所有內容均使用epoll
進行此類操作。現在popen
確實會給我一個FILE *
而不是fd
。使用fileno
函數並將得到的fd
放入epoll
會節省嗎?如果不是,還有其他方法嗎?我不希望這個過程阻止,這就是爲什麼我想要通知。在epoll中使用FILE *
0
A
回答
0
是的,它是安全的,只要你不用文件描述符做任何額外的事情,不用小心它似乎是安全的。還有一件事是,你可能想把文件描述符標記爲非阻塞。所以你可以read()
沒有阻止和處理EBUSY
或EAGAIN
檢查errno
。
+0
我同意你在FILE *接口的文件描述符上使用'epoll()'是安全的 - 它只是將描述符返回爲活動狀態。但是*將文件描述符標記爲非阻塞*?如果實際閱讀是通過問題中提到的基於FILE *的stdio函數完成的,我不認爲這是安全的。標記「FILE *」的底層文件描述符非阻塞可能會導致嚴重的問題,因爲庫調用幾乎肯定不會使用非阻塞描述符。 –
相關問題
- 1. 如何使用epoll?
- 2. 如何使用epoll?
- 3. epoll如何在python中使用?
- 4. JDK7 NIO.2在Linux上使用Epoll等?
- 5. 是否可以使用epoll,以及在Netmap中使用epoll加速是否合理?
- 6. 使用FILE *
- 7. 使用(FILE *)
- 8. 如何在netty-all中禁用epoll(並使用poll)4.1.3+
- 9. 在$ _FILES ['file'] ['name']中使用變量
- 10. 如何在Perl中使用File :: Find?
- 11. ng-file-upload $ file null首次使用後
- 12. 在epoll數據結構中同時使用void * ptr和int fd
- 13. 如何在此代碼中使用epoll而不是select?
- 14. epoll:我必須使用多線程
- 15. 使用epoll主循環延遲執行
- 16. linux - 無法讓eventfd一起使用epoll
- 17. epoll/libevent/libev可以使用UDT嗎?
- 18. 使用epoll處理短讀取()
- 19. Java:使用File API
- 20. 增量使用file()?
- 21. file:/,file://,file:///
- 22. epoll和超時
- 23. epoll多進程
- 24. epoll VS select
- 25. C++ epoll與container_of
- 26. epoll性能
- 27. epoll with timerfd
- 28. 如何在PowerShell 3.0中使用out-file命令時使用SaveFileDialog
- 29. 使用File類寫在VB .NET
- 30. ERROR權限使用SELECT INTO FILE ...在MySQL
我建議不要混合緩衝的I/O('FILE *')和(e)輪詢。就我個人而言,我只會寫我自己的'popen_fd',它返回一個描述符,你可以從'read'中讀取。 – melpomene