operator= on fd_set - linux 的套接字通信

问题描述 投票:0回答:2

我正在编写一个使用 select() 的程序,给定一个要读取的 fd_set。
在程序中,我保存了两个 fd_sets:
1. fd_set 名为 DB,其中包含我可以处理的所有 fd。
2. fd_set 名为 toSelect - 我将其发送到 select() 方法,并在 select() 返回后稍后处理。

在调用 select() 之前,我正在这样做:
选择= DB;
为了将DB中的所有fd复制到toSelect fd_set中。
由于我的程序运行得不太好(出现消息“连接被对等方重置”),我的代码可能有问题。
这个任务可以吗? 如果没有,我如何在不使用operator=的情况下将一个fd_set复制到另一个?
谢谢你。

c posix-select
2个回答
0
投票

不要执行

toSelect = DB
,而是尝试使用 FD_ISSET 和 FD_SET 宏将值从一个复制到另一个,然后查看问题是否仍然存在。


0
投票

fd_set 的内部细节,包括是否定义(并通过编译)operator= 是实现定义的。 fd_set 唯一向您承诺的是它以宏(或函数)FD_SET、FD_CLEAR、FD_ISSET、FD_ZERO 形式提供的接口。

如果您希望能够使用operator=,您可以为其编写自己的包装类。

© www.soinside.com 2019 - 2024. All rights reserved.