什么是文件描述符的“异常”?

Posted

技术标签:

【中文标题】什么是文件描述符的“异常”?【英文标题】:What's a file descriptor's "exception"? 【发布时间】:2013-03-20 19:47:58 【问题描述】:

当调用 select() 询问哪些文件描述符有“异常”等待时,这是什么意思?

如何触发这些“异常”之一?

如果有人能指出一个很好的解释,那就太棒了。我一直在谷歌上搜索,找不到任何东西。

【问题讨论】:

*nix select and exceptfds/errorfds semantics的可能重复 【参考方案1】:

短格式:当 TCP 套接字接收到带外数据时会发生异常情况。

如果您阅读了selectmanual page,您会发现对另一个名为select_tut 的补充手册页的引用并附有说明:

exceptfds

这个集合被监视“异常情况”。在实践中,只有一种这样的异常情况是常见的:从 TCP 套接字读取的带外 (OOB) 数据的可用性。有关 OOB 数据的更多详细信息,请参阅 recv(2)、send(2) 和 tcp(7)。 (另一种不太常见的情况,其中 select(2) 指示在数据包模式下的伪终端出现异常情况;请参阅 tty_ioctl(4)。)在 select() 返回后,exceptfds 将清除所有文件描述符,除了那些发生了异常情况。

【讨论】:

【参考方案2】:

确实,这方面的信息似乎很少。谢天谢地,existing question 给出了很好的答案。

例如,在 Linux 的情况下,它可以表示在流套接字上接收到的带外数据,或“连接到处于数据包模式的主设备的伪终端从设备上发生状态更改”@987654322 @。

【讨论】:

以上是关于什么是文件描述符的“异常”?的主要内容,如果未能解决你的问题,请参考以下文章

到底什么是文件描述符???

在不知道文件描述符的情况下检测文件大小不为零的最快方法是啥?

Linux 进程线程文件描述符的底层原理

文件描述符的复制

「图文结合」Linux 进程、线程、文件描述符的底层原理

文件描述符的继承 - Python 3.4