*nix select 和 exceptfds/errorfds 语义

2023-12-22

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(使用前将#替换为@)

*nix select 和 exceptfds/errorfds 语义 的相关文章

随机推荐

  • Azure DevOps Pipelines,作业如何知道它是从计划触发的?

    我有一个 Azure DevOps 系统已启动并正在运行 并具有根据 PR 以及夜间计划运行管道的触发器 如下所示 trigger batch true branches include main release pre release s
  • 无法部署 - 错误:您的应用程序版本不能超过 500 个

    部署到 EB 时出现以下错误 错误 您的应用程序版本不能超过 500 个 任何一个 删除某些应用程序版本或请求增加限制 我手动删除了一些版本 我不希望部署因为这个限制而失败 Elastic Beanstalk 是否有办法自动驱逐未使用的版本
  • iOS 嵌套视图控制器视图位于 UIViewController 的视图内?

    在 iOS 中 在 UIViewController 的视图中嵌套视图控制器的视图通常是不好的编程习惯吗 举例来说 我想要某种可以响应用户触摸的交互元素 但只占据屏幕的 25 我想我会将此嵌套视图控制器添加到我的 UIViewControl
  • Yii 2 嵌套形式

    首先抱歉我的英语不好 我正在使用Yii2 dynamicforms 扩展 https github com wbraganca yii2 dynamicform到 Yii 2 中的嵌套表单 下列的本指南 https github com w
  • 如何正确实现自定义迭代器和const_iterators?

    我有一个自定义容器类 我想为其编写iterator and const iterator类 我以前从未这样做过 也未能找到合适的操作方法 关于迭代器创建的准则是什么 我应该注意什么 我还想避免代码重复 我觉得const iterator a
  • Javascript 检测文本区域中的滚动条

    我想知道是否有人知道我将如何检测滚动条何时出现在textarea 我目前在 JavaScript 中使用 mootools 但在让它检测滚动条时遇到问题 function has scrollbar elem id const elem d
  • 带动画的RemoveFromSuperView() - AnimationWillEnd不会触发

    我有一个 UIView 并尝试使用动画 淡入 alpha 0 0 将其从其超级视图中删除 工作正常 但视图永远不会从超级视图中删除 尽管我向 AnimationWillEnd 添加了委托 这是代码 控制台输出不会被写入 视图也不会被删除 怎
  • Swing 应用程序在哪里使用?

    现在人们真的使用 Swing 应用程序吗 我没有找到使用它们的地方 是否可以跳过 AWT 和 Swing 包 不过我学到了一些基础知识 如果您专门为网络编写内容 您可能可以跳过 Swing 但否则您绝对会遇到它 我从来没有开发过没有 Swi
  • 将 Switch 小部件添加到 ActionBar 并响应更改事件

    我可以知道如何在 ActionBar 中添加 Switch 小部件并处理单击事件或切换更改事件吗 现在我可以膨胀 ActionBar 中的 Switch 但无法响应更改事件 我已将以下内容添加到 main xml 中 menu menu
  • express.Router 和 app.get 之间的区别?

    我从 NodeJS 和 Express 4 开始 我有点困惑 我正在阅读 Express 网站 但看不到when使用路由处理程序或何时使用express Router 正如我所看到的 如果我想在用户点击时显示页面或其他内容 show例如我应
  • 在 Excel VBA 中添加到数组函数

    我正在尝试在 for 循环中将一个数组添加到 Double 数组的数组中 这是我的代码 Sub Test3 Dim a As Double i As Integer ReDim a 1 To 10 1 To 3 Dim d For i 1
  • Android Studio 3.0:无法解决模块依赖关系

    我有一个主要项目和第二个项目 模块 我导入后module项目作为模块依赖项app项目并尝试同步所有内容 我收到以下错误 Unable to resolve dependency for app debug compileClasspath
  • 迅速。如何将文本行追加到 file.txt 顶部?

    我正在实现一个小型记录器 在其中写入 TXT 文件 我希望最后一个事件位于文件顶部 但我无法使其正常工作 互联网上的所有示例都使用 fileHandle seekToEndOfFile 在文件末尾写入 这就是我所拥有的 private st
  • 将多个值从 MVC3 视图传递到 ActionMethod

    我想知道是否有人可以帮助我 我很抱歉听起来像个笨蛋 但我是 MVC3 的新手 我试图将 2 个值从视图传递到操作方法 但这并不公平 HTML Html ActionLink ASSIGN AssignTokenToDataTemplate
  • 我如何创建像 Altair 这样并排的条形图?

    我想要创造的图片 https i stack imgur com VZ0K3 png 我得到了图表的左侧 前三分之一 并尝试创建 bars2 和 text2 字段 但这不起作用 并将其添加到原始的ranked movies字段中 但这一切都
  • Groovy 方法从列表中获取随机元素

    Groovy 在管理集合方面非常强大 我有一个这样的列表 def nameList Jon Mike Alexia 我想做的是迭代 10 次 从第一个列表中获取 10 个人的随机名字 10 times Person person new P
  • 在 EKS 集群中挂载 EFS:示例部署失败

    我目前正在尝试创建一个 EFS 以在 EKS 集群中使用 我已遵循所有说明 并且大多数情况下一切似乎都正常 但是 当尝试应用 multiple pods 示例部署时here https github com kubernetes sigs
  • 如何在Java中的FlatBuffer中存储字典(地图)

    我正在从中学习平面缓冲区link https google github io flatbuffers flatbuffers guide tutorial html 没有例子演示如何存储字典 地图 这里提到了 Storing dictio
  • 测试与 docker 守护进程的连接

    我正在编写一个将自动启动 docker compose 的脚本 然而 有时 做eval docker machine env default 不会导致 docker 守护进程立即连接 并且当下一行到来时 docker compose up
  • *nix select 和 exceptfds/errorfds 语义

    The select http www opengroup org onlinepubs 007908775 xsh select html系统调用需要 3 个文件描述符集来监视 fd 的可读 可写和文件描述符上的 异常 我的选择man p