如果我通过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);
答案 0 :(得分:6)
您可以使用任何标准wait functions,例如WaitForSingleObject()
,例如:
switch (WaitForSingleObject(pi.hProcess, 0))
{
case WAIT_OBJECT_0:
// process has terminated...
break;
case WAIT_TIMEOUT:
// process is still running...
break;
}
答案 1 :(得分:0)
您可以使用GetExitCodeProcess()
检索流程的退出代码,如果流程仍在运行,则会提供特殊的STILL_ACTIVE
值:
DWORD exit_code;
GetExitCodeProcess(pi.hProcess, &exit_code);
if (exit_code == STILL_ACTIVE) {
}