This topic has been archived. It cannot be replied.
-
工作学习 / IT技术讨论 / 或许是简单问题,但我四处查找而无果:C/C++中如何检测stdin是否有输入?要求如果没有输入立刻返回,不能使用console函数(因为stdin可能被重订向).
-xhis(枫下恩仇#13 xhis);
2004-2-3
{71}
(#1588713@0)
-
这是操作系统的问题,不是C/C++的问题。跟target o/s有关。
-canadiantire(ct);
2004-2-3
(#1588862@0)
-
Sorry,没说清楚,是在Windows下。
-xhis(枫下恩仇#13 xhis);
2004-2-3
(#1588870@0)
-
原来DOS下简单,由kbhit(),现在应该写WM_CHAR, WM_KEYDOWN/KEYUP得Memssage里面
-canadiantire(ct);
2004-2-3
(#1588898@0)
-
这些都是检测console的,如果stdin被重定向到文件,输入就检测不到了。
-xhis(枫下恩仇#13 xhis);
2004-2-3
(#1588905@0)
-
估计我能想到你都想过了, 看看这个吧http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaskdr/html/askgui07152003.asp
-canadiantire(ct);
2004-2-3
(#1588917@0)
-
多谢你的回复,不过我的情况更复杂些:需要重定向到管道。在UNIX中使用select/ioctl就可以,不知道Windows中为什么这么难找到对应函数:(
-xhis(枫下恩仇#13 xhis);
2004-2-3
(#1588956@0)
-
yeah, it sucks. BTW, Hope some one can help you, good luck.
-canadiantire(ct);
2004-2-3
(#1588984@0)
-
I've took the solution of creating a seperate thread to detect input by using getchar()/ungetc(), it's just a little 'Complex'.
-xhis(枫下恩仇#13 xhis);
2004-2-3
(#1589019@0)