【问题标题】:FD_SET not putting the file descriptor in the setFD_SET 未将文件描述符放入集合中
【发布时间】:2021-07-06 15:39:58
【问题描述】:
我正在使用以下代码来设置文件描述符的值
fd_set current_sockets, ready_sockets;
FD_SET(sock_fd, &current_sockets);
在上面的 sock_fd 是 3。在执行这一行之后,我在
中看不到这个值 3
当前_sockets。事实上,我看到了一些奇怪的价值观。这可能是什么原因?
【问题讨论】:
标签:
c
client-server
file-descriptor
【解决方案1】:
当您声明 fd_set current_sockets, ready_sockets; 时,这两个变量都未初始化。 man 2 select 说:
FD_ZERO()
This macro clears (removes all file descriptors from) set.
It should be employed as the first step in initializing a
file descriptor set.
但是您跳过了这个非可选步骤,因此您的 FD 集充满了随机垃圾。
另外,fd_set 结构的内容是未指定的,因此除了使用 FD_ISSET 之外,您不应该期望能够通过任何方式理解它们。