【问题标题】:How can I check if a CLI program is waiting for input from stdin?如何检查 CLI 程序是否正在等待来自标准输入的输入?
【发布时间】:2012-05-29 16:29:19
【问题描述】:

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

【问题讨论】:

  • 从哪里检查?创建程序?控制台?
  • 你还在等什么?这是为了让您可以发送输入还是在进行某种交互式输入?
  • 你没有,你重新设计了你的父程序。你要么(a)让它继承你的标准输入,什么都不做,要么(b)为它创建一个管道,给它你想要的输入,然后关闭管道。但是你必须小心避免死锁,如果程序也产生输出,要么使用多个线程,要么小心使用非阻塞 I/O 和WaitForMultipleObjects
  • 没有。我现在只需要当创建的流程需要输入时,我没有任何输入。然后我将此信息发送到远程 Web 应用程序,以便远程用户可以与创建的进程进行交互。我希望我现在清楚了,哈哈!
  • 您必须修改子程序,以便它告诉您何时可以输入。您可以通过多种方式执行此操作,例如,查找 CreateEvent 函数。

标签: c windows api stdin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2021-05-28
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多