我正在测试的东西,我做了一个非阻塞插座,但是" 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);
}
答案 0 :(得分:-1)
不推荐,但如果你想要,你可以这样做:
if (fcntl(0, F_SETFL, O_NONBLOCK) == -1) {
perror("fcntl");
exit(EXIT_FAILURE);
}
你有一个非阻塞stdin。
提示:最好使用select或poll来等待准备文件描述符。