我正在编写一个使用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
谢谢。
答案 0 :(得分:0)
尝试使用FD_ISSET和FD_SET宏将值从一个复制到另一个,而不是执行toSelect = DB
,并查看问题是否仍然存在。
答案 1 :(得分:0)
fd_set的内部细节包括是否定义operator =(并通过编译)是实现定义的。 fd_set承诺的唯一的东西是它以宏(或函数)FD_SET,FD_CLEAR,FD_ISSET,FD_ZERO的形式提供的接口。
如果您希望能够使用operator =,您可以为它编写自己的包装类。