这是我的示例代码:
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
int main()
{
int fd = socket(AF_INET, SOCK_STREAM, 0);
printf("--> fd is %d, FD_SETSIZE is %d\n", fd, FD_SETSIZE);
fd_set set;
FD_ZERO(&set);
FD_SET(fd, &set);
int retval = select(fd + 1, &set, NULL, NULL, NULL);
if(-1 == retval)
{
perror("select");
}
printf("retval is %d\n", retval);
}
为什么选择不失败或阻止/超时? (retval
为1,并且fd
设置为set)但是在一个openend套接字上,没有可用的数据。我错过了哪些文件?