Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
使用QWinEventNotifier响应Windows上可用的Stdin数据_Windows_Qt_Winapi_Qt5 - Fatal编程技术网

使用QWinEventNotifier响应Windows上可用的Stdin数据

使用QWinEventNotifier响应Windows上可用的Stdin数据,windows,qt,winapi,qt5,Windows,Qt,Winapi,Qt5,我正在构建一个Qt-windows应用程序,它需要对写入其stdin的数据做出反应。 我意识到我可以在这里使用阻塞线程或轮询计时器,但似乎使用QWinEventNotifier应该是可行的 但是,如果我将通知程序初始化为通知程序\=new QWinEventNotifier(GetStdHandle(STD\u INPUT\u HANDLE)),此通知程序似乎会不断发出激活的,无论是否有任何可读取的数据 我错过了什么?我是否需要以某种方式手动重置事件?我应该使用不同的手柄吗 这里的结果是,当我尝

我正在构建一个Qt-windows应用程序,它需要对写入其stdin的数据做出反应。 我意识到我可以在这里使用阻塞线程或轮询计时器,但似乎使用QWinEventNotifier应该是可行的

但是,如果我将通知程序初始化为
通知程序\=new QWinEventNotifier(GetStdHandle(STD\u INPUT\u HANDLE))
,此通知程序似乎会不断发出
激活的
,无论是否有任何可读取的数据

我错过了什么?我是否需要以某种方式手动重置事件?我应该使用不同的手柄吗


这里的结果是,当我尝试在发出此信号时从stdin读取时,调用将永远阻塞-stdin流仍然打开,但没有足够的数据可读取,因此在写入更多数据之前,调用不会返回。Qt是否提供了任何工具,可以让我避免陷入这样的困境,而不必求助于混乱的终止线程?

看到这一点,谢谢,我没有遇到过这个例子——但是,这个例子似乎也说明了我的问题。即使没有可读取的内容,通知程序也会发出激活的消息,然后读取调用将永远阻塞。阻塞并挂起UI,但在我的例子中,控制台本身也不会@user3896248。如果我找到了解决方案,我会告诉你的。谢谢,我没有遇到过那个例子,但是,这个例子似乎也说明了我的问题。即使没有可读取的内容,通知程序也会发出激活的消息,然后读取调用将永远阻塞。阻塞并挂起UI,但在我的例子中,控制台本身也不会@user3896248。如果我找到解决办法,我会告诉你的。