【问题标题】:How can I get the state of a program?如何获取程序的状态?
【发布时间】:2012-09-15 18:04:15
【问题描述】:

我正在观察一个程序并想杀死它,如果它处于“等待:执行”状态一段时间。

这是 Process Explorer 的屏幕截图:

我如何通过代码获取该状态? 或者可以告诉我该状态的确切含义?这可能会帮助我找到正确的查询来解决我的问题。

【问题讨论】:

  • 信息应该在某个过程的 PCB 中。这是 Windows 8 吗?
  • Windows 7 中没有。
  • 应用程序的主线程等待是完全正常的
  • @DavidHeffernan 在我的情况下,这是一个控制台应用程序,它应该完成它的工作并退出。但是当我从我的 vb 脚本启动它时,应用程序会在某些(可重现的)情况下挂起。但它可以在 cmd 中使用相同的命令行。

标签: c++ c winapi thread-state


【解决方案1】:

不是程序的状态,而是线程的状态。一个进程可以有很多线程。

您可以致电WaitForSingleObject 确定某些状态。

您还可以使用 COM 实例化 WMI 并选择 Win32_Thread class

Here is some example.

更多信息在这里:How to determine that a win32 thread is either in Wait or Join or Sleep state in c++

【讨论】:

  • 感谢您的提示。我需要一些时间来理解和实施它。
【解决方案2】:

表示线程正在等待调度器/执行器的一个组件

可以通过 WMI Win32_Thread(或 .net System.Diagnostics.ProcessThread WaitReason)获取

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2018-01-16
    • 2021-05-14
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    相关资源
    最近更新 更多