编辑
2022-09-02
测试
00
请注意,本文编写于 546 天前,最后修改于 546 天前,其中某些信息可能已经过时。

目录

前因
解决方法
参考文章

前因

最近在写这个 博客项目 的时候,因为内嵌了 waline.js 作为子进程,所以有时候需要停止子进程并重启(传递给子进程新的配置)

但正常通过 childprocess.exit() 时,发现并没有完全退出,重启会报错 端口被占用

这是因为子进程往往还会产生出子进程,无法被 kill() 掉。

解决方法

在使用 spawn 时,增加 detached: true 参数,让子进程在一开始就和父进程分离。然后在需要结束的地方:

js
childprocess = spawn('node something.js',[],{detached: true})
js
childprocess.unref(); # -号表示结束以pid为首的整个进程树 process.kill(-childprocess.pid)

参考文章

如何正确地结束NodeJS子进程 - 避坑

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:mereith

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!