线程状态更改-是否有WinAPI为其获取回调?
我在某个控制台进程中有一个线程,其代码对我不可用。当其状态发生变化(例如变为空闲)时,是否有方法获得通知 可能是钩子API,甚至是内核模式API(如果没有其他方法…) 扩展: 我有传统的控制台应用程序,我必须在我的程序中操作。显然,与之交互的唯一方法是通过线程状态更改-是否有WinAPI为其获取回调?,winapi,Winapi,我在某个控制台进程中有一个线程,其代码对我不可用。当其状态发生变化(例如变为空闲)时,是否有方法获得通知 可能是钩子API,甚至是内核模式API(如果没有其他方法…) 扩展: 我有传统的控制台应用程序,我必须在我的程序中操作。显然,与之交互的唯一方法是通过stdin。因此,我将它作为新的进程运行,并将命令发送到它的stdin。我从它的stdout中获取了一些文本,但它不是完全可预测的,因此我无法依靠它来知道它何时完成当前工作并准备好接收下一个命令。流程是这样的:我运行它,发送(例如)comman
stdin
。因此,我将它作为新的进程运行
,并将命令发送到它的stdin
。我从它的stdout
中获取了一些文本,但它不是完全可预测的,因此我无法依靠它来知道它何时完成当前工作并准备好接收下一个命令。流程是这样的:我运行它,发送(例如)command1
,等待它完成工作(一些CPU
加载和一些IO
操作),然后发出command2
,依此类推,直到最后一个命令。当它完成最后一个命令的工作时,我可以优雅地关闭它(sendexit
command)。问题是,我有几个进程的这个控制台exe的同时工作
我可以:
stdout
接收以来的超时-不好,因为它可能是一毫秒和一小时regex
等待预期的输出来解析标准输出-不好。。。结果完全出乎意料。这几乎是随机的wait
状态时(而不是针对IO
),并且至少有一个线程正在等待用户输入()-这也不好:如果我同时使用多个进程,可能会对系统造成不必要的、非比例的负担我希望它能很好地解释这个问题……你的实际目标是什么?@DavidHeffernan,知道进程何时空闲(不做任何计算/IO操作/打印文本/任何东西…),只是等待输入-不是轮询,只是事件驱动。你为什么想知道?我怀疑你提出的解决问题的办法是错误的。但是因为我们不知道问题所在,所以很难说。@DavidHeffernan我认为问题很简单。。。我希望在进程完成其工作并等待输入时收到通知(线程处于等待状态,其中一个或多个线程正在等待进程的
stdin
)。再一次——不是通过投票。考虑到你在两次尝试问这个问题时得到的回答,我认为这个问题需要更多的工作。很可能你提出的解决方案是错误的。然而,你似乎对解释这个问题一点也不感兴趣,就这样吧。祝你好运