如何检查CLI程序是否正在等待来自stdin的输入?

3
我该如何使用Windows C API检查使用CreateProcess()启动的CLI程序是否正在等待来自stdin的输入?

从哪里检查?从创建程序中?还是从控制台? - Bo Persson
你还在等什么?这是为了发送输入还是进行某种交互式输入? - user7116
1
你不需要这样做,你需要重新设计你的父程序。你可以选择(a)让它继承你的标准输入并且什么也不做,或者(b)为它创建一个管道,将你想要的输入传递给它,然后关闭管道。但是你必须小心避免死锁,如果程序还会产生输出,你可以使用多线程或者谨慎使用非阻塞I/O和WaitForMultipleObjects来解决。 - Adam Rosenfield
不,我只需要知道创建的进程何时需要输入,因为我没有任何输入。然后,我将此信息发送到远程Web应用程序,以便远程用户可以与创建的进程交互。我希望现在我表达清楚了,哈哈! - Jori
你需要修改子程序,以便在准备好输入时告诉你。你可以用多种方式实现这一点,例如查找CreateEvent函数。 - Harry Johnston
1个回答

0

正如上面的一些评论所说,一旦程序已经开始等待,您就无法检查它是否正在等待stdin。您可以使用事件处理程序,或者您可以简单地从stdin读取一个超时,在超时发生时标记您正在等待输入并再次开始等待超时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接