在 C 中对 read/write 和 select 使用相同的 fds

Using same fds for read/write with select in C

我有两个文件描述符,fd1fd2,我想从中读取和写入。我把它们放在 fd_set:

fd_set socks;  
FD_ZERO(&socks);
FD_SET(fd1,&socks);
FD_SET(fd2,&socks);

如果我像这样将它们作为 readfdswritefds 传递给 select

int fds = select(highsock+1, &socks, &socks, (fd_set *) 0, NULL);

并使用

FD_ISSET(fd1, &socks)

我如何知道 fd1 是否准备好阅读 写作?

你不知道。 select() 多次传递同一个指针时的行为未定义。

为可读和可写套接字传递两个单独的 FD 集。