operator = on fd_set - socket communication linux

时间:2011-05-24 17:22:13

标签: c select

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

在致电select()之前,我这样做:
toSelect = DB;
为了将DB中的所有fd复制到toSelect fd_set 由于我的程序运行不正常(提出“同步连接重置”消息),我的代码可能有问题。
这个任务可以吗? 如果没有,如何在不使用运算符=?
的情况下将一个fd_set复制到另一个fd_set 谢谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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