【问题标题】: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 之外,您不应该期望能够通过任何方式理解它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多