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

如果我有通过CreateProcess()创build的进程,我将如何确定它是否仍在运行? 我知道我需要使用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) { }