如果子进程关闭或崩溃,则关闭父进程
Close parent process if child closed or crashed
我有一个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);
此代码只是一个简单的示例。我在答案中提到的所有三个函数都可能失败,健壮的代码会检查它们的返回值并在失败时采取相应的行动。
相关文章:
- 终止 QProcess 不会终止子进程
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 子进程更新共享 mmap 内存,但父进程没有更改
- 使用 waitpid 时等待子进程终止
- 使用重定向标准处理子进程中的 kbhit
- 由 JOB 中的进程启动的子进程是否可以将 JOB 属性设置为脱离作业?
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- kill() 总是返回 0(成功),即使在子进程已经结束之后?
- 父进程和子进程之间的 POSIX 信号量
- 检测到由于操作系统内存不足而导致子进程终止
- 使用system()创建独立的子进程
- 从stdin读取时子进程挂起(fork/dup2竞争条件)
- 在 Bash 脚本中处理来自子进程的信号
- Qt C++ - 如何成功将数据传递给子进程?
- C++ 窗口本地系统模拟在子进程中失败
- 将类型化数组写入子进程 stdin 无法正常工作
- 将 nodejs 脚本作为子进程执行(而不是从其他脚本执行)
- 使用信号检测子进程何时终止的最佳方法是什么?
- MPI C 逐行向所有进程子进程发送矩阵 (MPI_COMM_SPAWN)
- 捕获远程进程子进程的标准输出