Unix/C问题在这里.
我有多个套接字,我试图轮询周期性数据.我不希望select无限期地等待,所以我有一个超时,我正在循环运行.我发现一旦套接字准备好读取,它就可以随时读取.因为,当没有任何数据要从任何套接字读取时,我无法选择进入休眠状态.
for (i = 0; i < n_connections; i++) {
FD_SET( sockfd[i], &master );
if (sockfd[i] > fdmax)
fdmax = sockfd[i];
}
for(;;) {
int nready = 0;
timeout.tv_sec = 1;
timeout.tv_usec = 0;
read_fds = master;
if ( (nready = select(fdmax+1, &read_fds, NULL, NULL, NULL)) == -1 ) {
fprintf( stderr, "Select Error\n" );
return FAILURE;
}
printf( "Number of ready descriptors: %d\n", nready );
for (i = 0; i <= fdmax; i++) {
if (FD_ISSET(i, …Run Code Online (Sandbox Code Playgroud)