与不使用相比,在这里使用 WaitForSingleObject
有什么好处?第一个代码块来自 previous answer .第二个障碍是我是如何做的。
BOOL IsProcessRunning(DWORD pid)
{
HANDLE process = OpenProcess(SYNCHRONIZE, FALSE, pid);
DWORD ret = WaitForSingleObject(process, 0);
CloseHandle(process);
return (ret == WAIT_TIMEOUT);
}
对比
BOOL IsProcessRunning(DWORD pid)
{
HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
const bool exists = (process != NULL);
CloseHandle(process);
return exists;
}
好像用的是SYNCHRONIZE需要更高的权限,我只想检查当前用户的 PID。
最佳答案
当一个进程完成时,它会停止运行,但它不会消失,直到它的最后一个句柄被关闭。第一个解决方案区分这两种状态(仍在运行或已完成运行)。当然,答案在返回时可能已经过时。
如果您不需要这种区别,那么您的方法就可以了(尽管我会将该函数命名为类似 DoesProcessExist 的名称)。
关于c++ - 检查进程 ID 时使用 WaitForSingleObject 的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12900036/