我正在使用child_process.spawn()从在Ubuntu上运行的Node.JS应用程序启动脚本。据我所知,标准的分叉或生成的* nix进程通常不会在父进程死后死亡,但是当从Node.JS生成进程时,它们似乎在我的应用程序崩溃或被ctrl-c等终止时被杀死。 。
为什么会这样,并且有解决办法?我似乎在child_process API中找不到任何明显的选项。
我的应用程序启动了一些应该在后台运行的运行时间很长的任务,并且如果我的节点服务器崩溃或由于其他原因而重新启动,我不想中断任务,而是希望节点服务器重新启动并优雅地恢复监视那些正在运行的任务的进度。
您需要设置分离选项
如果设置了分离选项,则子流程将成为新流程组的领导者。这使得孩子可以在父母退出后继续运行。
var child = spawn('prg', [], { detached: true, stdio: [ 'ignore', out, err ] });