Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在不阻塞Windows的情况下读取可用输入_C_Windows_Input_Nonblocking - Fatal编程技术网

C 如何在不阻塞Windows的情况下读取可用输入

C 如何在不阻塞Windows的情况下读取可用输入,c,windows,input,nonblocking,C,Windows,Input,Nonblocking,在Linux上,我可以读取可用的输入而不阻塞进程: fcntl(STDIN_FILENO, F_SETFL, fcntl(STDIN_FILENO, F_GETFL, 0) | O_NONBLOCK ) char buf[n]; int r = fread(buf, 1, n, stdin); if (r == 0){ printf("nothing\n"); } else { printf("read: "); fwrite(buf, 1, r, stdout);

在Linux上,我可以读取可用的输入而不阻塞进程:

fcntl(STDIN_FILENO, F_SETFL, fcntl(STDIN_FILENO, F_GETFL, 0) | O_NONBLOCK )
char buf[n];
int r = fread(buf, 1, n, stdin);
if (r == 0){
    printf("nothing\n");
}
else {
    printf("read: ");
    fwrite(buf, 1, r, stdout);
    printf("\n");
}
输入原点可以是任何对象,例如文件、端子或管道

如何在Windows XP上执行此操作


谢谢。

您可以在Windows上通过将重叠的
文件\u FLAG\u传递给来实现这一点。它看起来与Linux不太一样,可能有一些细微的差别,但它实现了相同的功能


查看MSDN页面,该页面为您提供了有关各种选项的更多详细信息。

为什么不从第二个线程读取输入?根据您的情况,这可能是一种更简单的方法,而不是使用非阻塞IO