使用相同的fds进行读/写,并在C中选择

jay*_*ynp 1 c sockets select

我有两个文件描述符,fd1并且fd2我想读取和写入从.我有他们fd_set:

fd_set socks;  
FD_ZERO(&socks);
FD_SET(fd1,&socks);
FD_SET(fd2,&socks);
Run Code Online (Sandbox Code Playgroud)

如果我将它们作为两个readfdswritefdsselect这样的:

int fds = select(highsock+1, &socks, &socks, (fd_set *) 0, NULL);
Run Code Online (Sandbox Code Playgroud)

并使用

FD_ISSET(fd1, &socks)
Run Code Online (Sandbox Code Playgroud)

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

dus*_*uff 5

你没有.select()当多次传递同一指针时的行为是未定义的.

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