在C中将stdin与select()一起使用
我有以下程序:
#include <stdio.h> #define STDIN 0
int main()
{
fd_set fds;
int maxfd;
// sd is a UDP socket
maxfd = (sd > STDIN)?sd:STDIN;
while(1){
FD_ZERO(&fds);
FD_SET(sd, &fds);
FD_SET(STDIN, &fds);
select(maxfd+1, &fds, NULL, NULL, NULL);
if (FD_ISSET(STDIN, &fds)){
printf("\nUser input - stdin");
}
if (FD_ISSET(sd, &fds)){
// socket code
}
}
}
我面临的问题是,一旦在STDIN上检测到输入,消息“ User input-
stdin”就继续打印…为什么在循环检查哪一个描述符已输入的同时,它一次又不打印一次?
谢谢。
回答:
该select
功能仅在有可用输入时告诉您。如果您实际上并没有消耗它,那么select将继续直接下降。
以上是 在C中将stdin与select()一起使用 的全部内容, 来源链接: utcz.com/qa/403283.html