我有两个文件描述符,
fd1
和fd2
,我想从中读取和写入。我把它们放在fd_set
:
fd_set socks;
FD_ZERO(&socks);
FD_SET(fd1,&socks);
FD_SET(fd2,&socks);
如果我将它们同时作为
readfds
和 writefds
传递给 select
,如下所示:
int fds = select(highsock+1, &socks, &socks, (fd_set *) 0, NULL);
并使用
FD_ISSET(fd1, &socks)
我如何知道
fd1
是否准备好阅读或写作?
你不知道。当同一指针被多次传递时
select()
的行为是未定义的。
为可读和可写套接字传递两个单独的 FD 集。