This question already has answers here:
How to handle the Linux socket revents POLLERR, POLLHUP and POLLNVAL?
(4个答案)
已关闭6年。
手册说民意测验(2):
到底有什么区别?编写一个简单的程序表明,如果我关闭文件描述符,然后尝试从关闭的fd中读取,
(4个答案)
已关闭6年。
手册说民意测验(2):
到底有什么区别?编写一个简单的程序表明,如果我关闭文件描述符,然后尝试从关闭的fd中读取,
POLLNVAL
将触发。但是,我不知道返回POLLHUP
的方法。 最佳答案
POLLNVAL
等效于EBADF
:它意味着文件描述符实际上并未引用任何打开的文件,即它是close
d或从不以打开开头。除非由于编程错误或故意尝试查询文件描述符是否无效,否则这种情况永远不会发生。外部条件(例如,对等项关闭网络套接字或管道的末端)永远无法将文件描述符关闭到套接字或管道的末端。如果可能的话,这基本上将在使用套接字/管道/等的任何程序中导致大量漏洞。
另一方面,POLLHUP
表示您的文件描述符有效,但处于以下状态:
资料来源:http://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html
如果要查看POLLHUP
,只需打开pipe
,关闭阅读端,然后使用poll
查询书写端。
09-04 16:03