如何判断从 CreateProcess 启动的进程是否仍在运行

How to tell if a process started with CreateProcess is still running?

本文关键字:进程 是否 运行 启动 CreateProcess 何判断 判断      更新时间:2023-10-16

如果我通过CreateProcess()创建了一个进程,我将如何确定它是否仍在运行?我知道我需要使用pi.hProcess但我不知道怎么做,谷歌并没有真正给我有意义的提示。

PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
bool got_it=CreateProcess(NULL, CA2T(launchString.c_str()), NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);

您可以使用任何标准的等待函数,例如 WaitForSingleObject() ,例如:

switch (WaitForSingleObject(pi.hProcess, 0))
{
    case WAIT_OBJECT_0:
        // process has terminated...
        break;
    case WAIT_TIMEOUT:
        // process is still running...
        break;
}

您可以使用 GetExitCodeProcess() 检索进程的退出代码,如果进程仍在运行,它将给出特殊的STILL_ACTIVE值:

DWORD exit_code;
GetExitCodeProcess(pi.hProcess, &exit_code);
if (exit_code == STILL_ACTIVE) {
}