从stdin读取非阻塞

我希望ReadConsoleW()在读取特定数量的字节后返回。 但它不会返回。

读完指定的字节数后,如何使ReadConsoleW()尽快返回?

我试过的代码在这里:

 #include <stdio.h> #include <Windows.h> int main() { //something is being written to stdin. Sleep(2000); int b; int r; //read 3 wide character ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), &b, 3*sizeof(TCHAR), (LPDWORD)&r, NULL); //problem: no returns until enter pressed putc(b,stdout); while(1) {}; } 

使用SetConsoleMode关闭ENABLE_LINE_INPUT标志。 没有行编辑可用,但它不会等到按下输入。

请注意,您不能将三个WCHAR读入一个int

还要考虑Windows中使用ReadFile / WriteFile的异步I / O。 请参阅MSDN异步I / O

这有点复杂,但你有你想要的。