检查套接字文件描述符是否可用?

2023-12-11

如果我有一个文件描述符(套接字 fd),如何检查该 fd 是否可用于读/写? 在我的情况下,客户端已连接到服务器并且我们知道 fd。 但是,服务器会断开套接字,有什么线索可以检查吗?


你要fcntl()检查 fd 上的读/写设置:

#include <unistd.h>
#include <fcntl.h>

int    r;

r = fcntl(fd, F_GETFL);
if (r == -1)
        /* Error */
if (r & O_RDONLY)
    /* Read Only */
else if (r & O_WRONLY)
    /* Write Only */
else if (r & O_RDWR)
    /* Read/Write */

但这是与套接字不再连接时不同的问题。如果您已经在使用select() or poll()那么你就快到了。poll()如果您指定,将很好地返回状态POLLERR in events并检查它revents.

如果您正在执行正常的阻塞 I/O,那么只需在读/写错误出现时对其进行处理并正常恢复即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查套接字文件描述符是否可用? 的相关文章

随机推荐

  • 使用 Mongoose 填充其他集合中的记录计数

    我有 2 个 Mongoose 模型 Book 和 Users 我想这样做 当查找一本书时 我想获取当前图书用户的数量 这是书籍模型 var mongoose require mongoose var Users require users
  • 使用 Spring Boot 时出现 403,但与邮递员配合良好[重复]

    这个问题在这里已经有答案了 我在 url 上使用邮递员进行 api 调用 https cex io api order book BTC USD 普通 GET 没有标头 没有参数 什么也没有 但对于java也是一样 RestTemplate
  • Django Oscar 更改 URL 模式

    我已经设置了 django oscar 项目 并且正在尝试配置 U RL 我的目标是改变 catalogue to catalog 根据我添加的文档app py in myproject app py myproject app py fr
  • 访问 ANTLR 4 中的通道并单独解析它们

    我已将我的评论添加到 ANTLR 4 中的一个单独频道中 在我的例子中 它是频道 2 这是我的词法分析器语法 COMMENT gt channel 2 我想访问这个频道 2 并在这个频道上进行解析以积累评论 所以我将其包含在解析语法中 如下
  • 服务器不愿意处理请求

    我正在尝试使用 powershell 在名为 Branches 的 OU 下添加名为 Calder 的 OU 但我不断收到错误New ADOrganizationalUnit The server is unwilling to proce
  • IOS 中的 HTTPS post 请求

    我尝试使用以下代码发出 https post 请求 NSURL url NSURL URLWithString https portkey formspring me login initialize a request from url
  • CopyFileEx 具有多个文件,但只有一个复制对话框

    我已经在网络和 stackoverflow 上搜索过这个 我想将多个文件从多个源复制到多个目标 我还没有为 UnauthorizedAccessExceptions 烦恼 这些文件很可能无论如何都不会被使用 我可以使用 CopyFileEx
  • 如何在 VBA 中从两个范围创建一个范围?

    我有两个范围 每个范围包含一个单元格 例如 A1 和 C3 如何获得包含这两个之间的所有单元格的新范围 A1 C3 我试过这个 Set NewRange Range Range1 Address Range2 Address 另外 如何设置
  • 如何根据最后一个命令的退出代码更改 bash 提示颜色?

    如果之前的退出代码为 0 我想显示绿色笑脸 如果不成功则显示红色笑脸 基本上我想做这个提示 但还包括其他东西 PS1 u h w if 0 then echo e 32m e 37m else echo e 31m e 37m fi 我想将
  • org.hibernate.PersistentObjectException:传递给持久化的分离实体

    我已经成功地用 hibernate 编写了我的第一个主子示例 几天后我又拿了它并升级了一些库 不知道我做了什么 但我再也无法让它运行了 有人可以帮我找出返回以下错误消息的代码有什么问题吗 org hibernate PersistentOb
  • 将负数分配给无符号整数?

    在 C 编程语言中 unsigned int仅用于存储正值 但是 当我运行以下代码时 unsigned int x 12 printf d x 输出仍然是 12 我认为它应该打印出 12 或者我误解了什么 The 12等号右侧设置为有符号整
  • Vega-lite 条形图条形之间的空间

    D3新手 如何调整 vega lite 条形图中条形之间的间距并覆盖默认值 binSpacing 我认为只适用于直方图 请参阅下面的代码 我也想调整文本和字体系列的颜色 但我在文档中找不到它 schema https vega github
  • 如何获取转换后的 Windows 应用商店 UWP 应用程序的故障转储(或任何可用的故障报告)?

    我向 Windows 10 Store 提交了我的nativeWin32 应用程序是转换为 UWP应用程序使用Project Centennial转换器 该应用程序通过了商店认证 可以通过私人链接使用 当我测试它时 在运行我的测试时 应用程
  • 从 Android 内存读取 SQLITE 数据库

    我在 Java 应用程序上创建了一个 sqlite 数据库 并将其推送到我的 android 上 我想读取这个数据库 可能稍后也会写入 到目前为止 我发现的大多数教程都是在 android 中创建数据库 我认为我不需要重写 SQLiteOp
  • Rhinomocks - 嘲笑代表

    public interface IServiceInvoker R InvokeService
  • 如何在 Ruby 中创建用于深度复制/克隆对象的运算符?

    我想通过引入一个新的运算符来实现以下目标 例如 a b b 1 2 p a gt p b gt 1 gt 2 据我了解 我需要修改Object类 但我不知道该怎么做才能得到我想要的东西 require superators class Ob
  • 在 Javascript 中对日/月数组进行排序

    我正在尝试按从最新到最旧的顺序对日期数组进行排序 不幸的是 list sort 默认情况下 仅对第一个数字进行排序 我的数组如下所示 var MyArray 13 Jun 09 Jun 25 Aug 30 Jun 13 Aug 我尝试创建一
  • 如何使我的游戏引擎更快(GDI+、C#)

    我目前正在使用 GDI 用 C 构建 2D 游戏引擎 我确实知道有更好的 GDI 替代品 但我也已经深入到这个项目中 现在无法回头 因此 我目前有一个图形引擎 它可以根据我的相机位置和窗口大小来渲染位图的一部分 这给了我很大的性能提升 伟大
  • db.collectionNames 在 Node.js 中不起作用

    我想检查 Node js 中是否存在集合 我使用 db collectionNames 获取数据库中的名称列表 但什么也没发生 代码 connectDB DBURL then function db console log db conne
  • 检查套接字文件描述符是否可用?

    如果我有一个文件描述符 套接字 fd 如何检查该 fd 是否可用于读 写 在我的情况下 客户端已连接到服务器并且我们知道 fd 但是 服务器会断开套接字 有什么线索可以检查吗 你要fcntl 检查 fd 上的读 写设置 include