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

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

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

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

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

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


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


查看完整回答
反对 回复 2019-12-13
?
森林海

TA贡献2011条经验 获得超2个赞

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

查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 386 浏览

添加回答

举报

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