我正在使用popen
在我的应用程序中打开另一个进程并解析其输出。我希望在计划完成任何输出后立即收到通知。目前,我的程序中的所有内容均使用epoll
进行此类操作。现在popen
确实会给我一个FILE *
而不是fd
。使用fileno
函数并将得到的fd
放入epoll
会节省吗?如果不是,还有其他方法吗?我不希望这个过程阻止,这就是为什么我想要通知。在epoll中使用FILE *
0
A
回答
0
是的,它是安全的,只要你不用文件描述符做任何额外的事情,不用小心它似乎是安全的。还有一件事是,你可能想把文件描述符标记为非阻塞。所以你可以read()
没有阻止和处理EBUSY
或EAGAIN
检查errno
。
+0
我同意你在FILE *接口的文件描述符上使用'epoll()'是安全的 - 它只是将描述符返回为活动状态。但是*将文件描述符标记为非阻塞*?如果实际阅读是通过问题中提到的基于FILE *的stdio函数完成的,我不认为这是安全的。标记“FILE *”的底层文件描述符非阻塞可能会导致严重的问题,因为库调用几乎肯定不会使用非阻塞描述符。 –
相关问题
- 1. 如何在netty-all中禁用epoll(并使用poll)4.1.3+
- 2. 在$ _FILES ['file'] ['name']中使用变量
- 3. 如何在Perl中使用File :: Find?
- 4. ng-file-upload $ file null首次使用后
- 5. 如何在此代码中使用epoll而不是select?
- 6. epoll:我必须使用多线程
- 7. linux - 无法让eventfd一起使用epoll
- 8. 增量使用file()?
- 9. file:/,file://,file:///
- 10. C++ epoll与container_of
- 11. epoll VS select
- 12. epoll性能
- 13. 使用File类写在VB .NET
- 14. ERROR权限使用SELECT INTO FILE ...在MySQL
- 15. 使用@FILE在forfiles不工作
- 16. 我可以在IOS/Android平台上使用epoll吗?
- 17. 在不使用Epoll的Linux上增强Asio
- 18. 如何使用org-annotate-file?
- 19. Java.io.FileNotFoundException使用File对象
- 20. 和epoll的一次
- 21. epoll recv返回值
- 22. epoll的性能值
- 23. 如何使用epoll并使处理函数非阻塞?
- 24. File :: extension()在Laravel中不起作用
- 25. 使用File API读取文件,使用File API显示“TypeError:e is undefined”
- 26. 短耳在Linux上摊位的epoll()
- 27. Linux中多线程epoll的问题
- 28. Twisted中边缘触发的epoll事件
- 29. 多进程环境中的epoll
- 30. 如何在iPhone上的Safari中使用<input type ='file'>?
我建议不要混合缓冲的I/O('FILE *')和(e)轮询。就我个人而言,我只会写我自己的'popen_fd',它返回一个描述符,你可以从'read'中读取。 – melpomene