在C ++ Windows应用程序中,我启动了几个长时间运行的子进程(当前我使用CreateProcess(...)来执行此操作。如果主进程崩溃或关闭,我希望子进程自动关闭。由于需要在“父”崩溃时起作用,因此我认为这需要使用操作系统的某些API /功能来完成。这样就清除了所有“子”过程。我该怎么做呢?
3 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
一个有点棘手的解决方案是将父进程作为调试器附加到每个子进程(使用DebugActiveProcess)。当调试器终止时,其所有调试进程也将终止。
更好的解决方案(假设您也编写了子进程)是让子进程监视父进程,并在父进程消失时退出。
森林海
TA贡献2011条经验 获得超2个赞
Windows Job Objects听起来是一个不错的起点。Job Object的名称必须是众所周知的,或传递给子代(或继承该句柄)。当家长死亡时,需要通过失败的IPC“心跳”或仅在家长的进程句柄上的WFMO / WFSO来通知孩子。届时,任何子进程都可以使用TermianteJobObject降低整个组的工作效率。
- 3 回答
- 0 关注
- 426 浏览
添加回答
举报
0/150
提交
取消