非阻塞套接字被fgets阻止

时间:2017-05-29 21:13:08

标签: c linux sockets fcntl

我正在测试的东西,我做了一个非阻塞插座,但是" fgets"毁了我的计划。如何阻止fgets阻止我的while循环显示如下? 解决这个问题的代码将非常感激。

fcntl(clientSocket, F_SETFL, O_NONBLOCK);

while(1){

     fgets(buffer,sizeof(buffer),stdin);
     send(clientSocket,buffer,sizeof(buffer),0);

     recv(clientSocket,buffer,sizeof(buffer),0);
     printf("%s",buffer);

}

1 个答案:

答案 0 :(得分:-1)

不推荐,但如果你想要,你可以这样做:

if (fcntl(0, F_SETFL, O_NONBLOCK) == -1) {
   perror("fcntl");
   exit(EXIT_FAILURE);
}

你有一个非阻塞stdin。

提示:最好使用select或poll来等待准备文件描述符。