如何彻底杀死child_process.exec子进程

广告位招租
扫码页面底部二维码联系

最近在尝试使用child_process本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】来跑一些子任务时,调用了yarn的命令来【本文受版权保护】【版权所有,侵权必究】启动一个服务,但是发现怎么调接口都无法k【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】ill,子任务还在跑。后来灵光一闪,sp著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。awn在运行yarn命令的时候,是不是再【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net在它的上面包了一层。顺藤摸瓜,发现网上也未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。有同样的说法。原来,spawn在运行子命原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】令的时候,首先要选一个shell来跑,默【原创不易,请尊重版权】【作者:唐霜】认是使用sh,也可以使用bash或cmd【转载请注明来源】本文版权归作者所有,未经授权不得转载。.exe,这个需要在调用spawn的时候【原创内容,转载请注明出处】【未经授权禁止转载】传入它的第三个参数里面的配置来确定。这也转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net就意味着,child.pid返回的是调用【本文受版权保护】【未经授权禁止转载】sh的进程,而在sh里面执行命令产生的子转载请注明出处:www.tangshuang.net【转载请注明来源】进程的pid不是默认返回的child.p未经授权,禁止复制转载。原创内容,盗版必究。id,而且,在sh里面,可能还会再起其他著作权归作者所有,禁止商业用途转载。【本文受版权保护】的子进程,也就是说,实际上,我们看似只跑【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。了一个spawn,但是实际上它可能起了一【转载请注明来源】【本文首发于唐霜的博客】堆子进程,而我们想要kill的目标进程只著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】是这一堆里面的其中一个。

转载请注明出处:www.tangshua未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】ng.net未经授权,禁止复制转载。【访问 www.tangshuang.n著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.netet 获取更多精彩内容】

默认情况下,我们通过ctrl+c可以退出【本文受版权保护】著作权归作者所有,禁止商业用途转载。process,而nodejs会把SIG未经授权,禁止复制转载。未经授权,禁止复制转载。INI传递给所有子进程,进而关闭全部子进未经授权,禁止复制转载。【未经授权禁止转载】程。但是,如果我们自己手动调用child【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】.kill来杀死子进程,就会导致只杀掉了原创内容,盗版必究。本文作者:唐霜,转载请注明出处。一个,而且可能是最不重要的(因为跑的是s【本文受版权保护】本文版权归作者所有,未经授权不得转载。h)。

【关注微信公众号:wwwtangshua【转载请注明来源】【关注微信公众号:wwwtangshuangnet】ngnet】【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。ngnet】本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。

有了这个前置知识,那么问题就比较好解决了【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】。我们只要封装一个自己的kill函数,传转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。入child.pid,然后把其全部子进程【原创内容,转载请注明出处】【原创不易,请尊重版权】杀掉即可。具体做法可以参考ps-tree里面的示例代码。在我们自己实现的时候,也【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。可以直接引用ps-tree这个包来把所有【作者:唐霜】【版权所有,侵权必究】子进程pid查出来,然后再通过exec遍【转载请注明来源】【未经授权禁止转载】历它们执行一个kill -9 {pid}【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】即可。如此就可以真正把子进程杀掉了。

【访问 www.tangshuang.n著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。et 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.n转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。et 获取更多精彩内容】【关注微信公众号:wwwtangshua【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。ngnet】