什么是文件描述符的“异常”?
Posted
技术标签:
【中文标题】什么是文件描述符的“异常”?【英文标题】:What's a file descriptor's "exception"? 【发布时间】:2013-03-20 19:47:58 【问题描述】:当调用 select() 询问哪些文件描述符有“异常”等待时,这是什么意思?
如何触发这些“异常”之一?
如果有人能指出一个很好的解释,那就太棒了。我一直在谷歌上搜索,找不到任何东西。
【问题讨论】:
*nix select and exceptfds/errorfds semantics的可能重复 【参考方案1】:短格式:当 TCP 套接字接收到带外数据时会发生异常情况。
如果您阅读了select
manual 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 @。
【讨论】:
以上是关于什么是文件描述符的“异常”?的主要内容,如果未能解决你的问题,请参考以下文章