您可以使用child_process.spawn和以下
detached选项来实现:
var spawn = require('child_process').spawn;spawn('node', ['bgService.js'], { detached: true});它将使子流程成为新流程组的领导者,因此它将在父流程退出后继续运行。
但是默认情况下,父进程将等待分离的子进程退出,并且还将监听其子进程
stdio。要将子进程与父进程完全分离,您应该:
- 将子
stdio
进程与父进程分离,将其通过管道传输到某个文件或/dev/null
- 使用
unref()
方法从父事件循环引用计数中删除子进程
这是一个示例:
var spawn = require('child_process').spawn;spawn('node', ['bgService.js'], { stdio: 'ignore', // piping all stdio to /dev/null detached: true}).unref();如果您不想丢失孩子的
stdin输出,则可以通过管道将其输出到某些日志文件中:
var fs = require('fs'), spawn = require('child_process').spawn, out = fs.openSync('./out.log', 'a'), err = fs.openSync('./out.log', 'a');spawn('node', ['bgService.js'], { stdio: [ 'ignore', out, err ], // piping stdout and stderr to out.log detached: true}).unref();有关更多信息,请参见
child_process.spawn文档



