通过PID

时间:2019-04-12 00:04:26

标签: c++ windows process

工作环境:c ++,Windows

我想存储所有pid(而不是进程名称),然后在我想杀死时以编程方式杀死进程。 我知道我可以使用system ("taskkill /pid xxxx")杀死一个进程,但是我想知道更好/最好的pid杀死一个进程的方法。 杀死进程的最佳方法是什么?为什么?

2 个答案:

答案 0 :(得分:2)

幸运的是,一旦拥有PID,将其杀死很容易。

  1. 执行OpenProcess以从PID中获取进程句柄
    • 确保指定PROCESS_TERMINATE权限。
  2. 执行TerminateProcess终止进程

答案 1 :(得分:1)

您可以使用OpenProcess()和TerminateProcess()终止进程。该代码将如下所示:

HANDLE handle = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessID);
if (NULL != handle) {   
    TerminateProcess(handle, 0);
    CloseHandle(handle);
}

为了方便使用system("taskkill /pid xxxx"),我邀请您阅读this post。已经给出了大量答案,以解释为什么不使用此表达式。

  • 慢:它必须跳过许多不必要的Windows代码和单独的程序才能进行简单的操作。

  • 不可移植:取决于暂停程序。

  • 样式不好:仅在确实必要时进行系统调用