The select http://www.opengroup.org/onlinepubs/007908775/xsh/select.html系统调用需要 3 个文件描述符集来监视 fd 的可读/可写和文件描述符上的“异常”。
我的选择man page http://web.archive.org/web/20070710123713/http://man.netbsd.se/?find=select%202%2020没有太多说明exceptfd
描述符集。它是干什么用的;它可以并且将会在文件描述符上通知什么类型的异常?
我假设这对于描述符类型可能有所不同......无论是 TCP 套接字、管道、 tty 等)。有谁有关于什么样的错误的更多信息select
可以报告不同种类的描述符吗?
有时人们认为除外fds需要检测错误,但这是一个误解。错误将被标记在readfds。尽管 POSIX 需要它(甚至调用参数errorfds),这取决于操作系统是否也标记了错误除外fds。实际上,只有当您关心时才需要此参数特殊条件,但很少需要检测这些。
什么符合异常条件取决于文件描述符的类型,但到目前为止最常见的用途是在 TCP 套接字上,它指示可以使用以下命令读取带外数据recv()
与MSG_OOB
旗帜。然而,TCP 带外数据有许多怪癖(例如,只有 1 个字节可以突出),因此很少使用。
在最近的 Linux 内核中除外fds可用于检测某些 sysfs 属性何时发生更改。可以通过读取下面的相应文件来读取属性的当前值/sys
, and a select()
文件描述符上将标记除外fds当属性改变时。然而,目前这仅适用于某些属性以及安装更改(/proc/mounts
).
此外,某些设备驱动程序将使用以下方式标记某些特定于设备的条件除外fds.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)