如果子进程关闭或崩溃,则关闭父进程

Close parent process if child closed or crashed

本文关键字:进程 子进程 如果 崩溃      更新时间:2023-10-16

我有一个Win32程序。该程序使用CreateProcess函数创建一个进程来运行另一个程序。如果子进程因任何原因关闭或崩溃,我想关闭父进程。

我该怎么做?

您可以在创建的进程句柄上使用WaitForSingleObject函数,如下所示:

STARTUPINFO si {sizeof(si)};
PROCESS_INFORMATION pi {};
CreateProcessW(/*your arguments here*/);
WaitForSingleObject(pi.hProcess, INFINITE);

请注意,如果您确实使用INFINITE作为等待时间,该功能将一直阻止,直到进程终止。如果希望父进程同时执行其他操作,最好将该代码放在单独的线程中。

如果希望父进程成为所创建进程的完整包装器,请在完成后使用GetExitCodeProcess获取子进程的退出代码。

DWORD dwExit;
GetExitCodeProcess(pi.hProcess, &dwExit);

此代码只是一个简单的示例。我在答案中提到的所有三个函数都可能失败,健壮的代码会检查它们的返回值并在失败时采取相应的行动。