如何在Windows中自动销毁子进程?

在C ++ Windows应用程序中,我启动了几个长时间运行的子进程(当前我使用CreateProcess(...)来执行此操作。


如果主进程崩溃或关闭,我希望子进程自动关闭。


由于需要在“父”崩溃时起作用,因此我认为这需要使用操作系统的某些API /功能来完成。这样就清除了所有“子”过程。


我该怎么做呢?


千巷猫影
浏览 394回答 3
3回答

子衿沉夜

一个有点棘手的解决方案是将父进程作为调试器附加到每个子进程(使用DebugActiveProcess)。当调试器终止时,其所有调试进程也将终止。更好的解决方案(假设您也编写了子进程)是让子进程监视父进程,并在父进程消失时退出。

森林海

Windows Job Objects听起来是一个不错的起点。Job Object的名称必须是众所周知的,或传递给子代(或继承该句柄)。当家长死亡时,需要通过失败的IPC“心跳”或仅在家长的进程句柄上的WFMO / WFSO来通知孩子。届时,任何子进程都可以使用TermianteJobObject降低整个组的工作效率。
打开App,查看更多内容
随时随地看视频慕课网APP