【问题标题】:Return process id返回进程id
【发布时间】:2009-03-12 08:51:55
【问题描述】:

我有这个问题想要解决。让我们认为我们有这种情况。我们有一个notepad.exe 实例正在运行。我运行另一个notepad.exe。现在我想杀死后者。我该怎么做?

如果我能够知道最后一个 notepad.exe 的 pid,那么我可以杀死它。但是如何获取上次打开程序的PID呢?

另一种方法是给每个应用程序一个唯一的图像名称。据我所知,这似乎是不可能的,因为图像名称是硬编码到二进制文件中的。

有什么想法吗?

附:正如您已经注意到的,这一切都在 Windows 中。

【问题讨论】:

  • 您可以控制记事本进程的启动吗?
  • 是的,我是。我正在用 C++ 编写一个程序,它跟踪正在运行的进程,如果有任何冻结崩溃,该程序会终止(如果需要)并重新启动它们。所有这些观看的节目都有相同的图像名称。
  • 但是如果你自己启动它们并使用 CreateProcess 那么你已经从 dwProcessId 字段中知道了 PID...?
  • 我使用 system() 函数启动它。

标签: windows process pid


【解决方案1】:

如果这些是其他人的进程(即您没有自己启动它们),那么 Windows 会跟踪 when the process was started(或其“creation time”),所以我希望您可以找到最后使用的任何进程这些信息。

【讨论】:

    【解决方案2】:

    那么,您是如何启动该流程的?例如,如果您从 C# 启动它,静态 Process.Start 方法将返回一个 Process 实例,该实例具有一个 Id 和一个 Kill() 方法。架构/语言之间的机制会有所不同...

    如果你不是通过代码来做的,那可能是题外话;-p

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多