在 C 中对 read/write 和 select 使用相同的 fds
Using same fds for read/write with select in C
我有两个文件描述符,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 集。
我有两个文件描述符,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 集。