如果我有通过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) { }