我有一个Win32程序。该程序使用CreateProcess函数创建一个进程以运行另一个程序。如果子进程因任何原因被关闭或崩溃,我想要关闭父进程。
我该怎么做?
答案 0 :(得分:4)
您可以在创建的进程'句柄上使用WaitForSingleObject
函数,如下所示:
STARTUPINFO si {sizeof(si)};
PROCESS_INFORMATION pi {};
CreateProcessW(/*your arguments here*/);
WaitForSingleObject(pi.hProcess, INFINITE);
请注意,如果您使用INFINITE
作为等待时间,则该功能将一直阻止,直到进程终止。如果您希望父进程在同一时间执行其他操作,则最好将该代码放在单独的线程中。
如果您希望父进程成为已创建进程的完整包装器,请在完成后使用GetExitCodeProcess
获取子进程的退出代码。
DWORD dwExit;
GetExitCodeProcess(pi.hProcess, &dwExit);
这段代码只是一个简单的例子。我在回答中提到的所有三个函数都可能失败,健壮的代码会检查它们的返回值并在失败的情况下采取相应的行动。