为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2019-10-28 15:48:30
在C ++ Windows应用程序中,我启动了几个长时间运行的子进程(当前我使用CreateProcess(...)来执行此操作。如果主进程崩溃或关闭,我希望子进程自动关闭。由于需要在“父”崩溃时起作用,因此我认为这需要使用操作系统的某些API /功能来完成。这样就清除了所有“子”过程。我该怎么做呢?
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

一个有点棘手的解决方案是将父进程作为调试器附加到每个子进程(使用DebugActiveProcess)。当调试器终止时,其所有调试进程也将终止。


更好的解决方案(假设您也编写了子进程)是让子进程监视父进程,并在父进程消失时退出。


查看完整回答
反对 回复 2019-10-28
?
大话西游666

TA贡献1817条经验 获得超14个赞

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


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 1098 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信