最近在写这个 博客项目 的时候,因为内嵌了 waline.js 作为子进程,所以有时候需要停止子进程并重启(传递给子进程新的配置)
但正常通过 childprocess.exit() 时,发现并没有完全退出,重启会报错 端口被占用
这是因为子进程往往还会产生出子进程,无法被 kill() 掉。
在使用 spawn 时,增加 detached: true 参数,让子进程在一开始就和父进程分离。然后在需要结束的地方:
js
childprocess = spawn('node something.js',[],{detached: true})
js
childprocess.unref(); # -号表示结束以pid为首的整个进程树 process.kill(-childprocess.pid)
最近在写这个 博客项目 的时候,因为内嵌了 waline.js 作为子进程,所以有时候需要停止子进程并重启(传递给子进程新的配置)
但正常通过 childprocess.exit() 时,发现并没有完全退出,重启会报错 端口被占用
这是因为子进程往往还会产生出子进程,无法被 kill() 掉。
在使用 spawn 时,增加 detached: true 参数,让子进程在一开始就和父进程分离。然后在需要结束的地方:
js
childprocess = spawn('node something.js',[],{detached: true})
js
childprocess.unref(); # -号表示结束以pid为首的整个进程树 process.kill(-childprocess.pid)