在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

回到顶部