可能重复:
node.js 同步执行系统命令
我希望从另一个 node.js 文件同步执行 node.js 文件。这就是我所拥有的,但它是异步的。
var spawn = spawn('node', ['./file.js']);
spawn.stdout.on('data',function(data){});
可能重复:
node.js 同步执行系统命令
我希望从另一个 node.js 文件同步执行 node.js 文件。这就是我所拥有的,但它是异步的。
var spawn = spawn('node', ['./file.js']);
spawn.stdout.on('data',function(data){});
从您在问题下的评论来看,听起来您不希望它是同步的,并且您不关心它的输出。
如果您只是想触发另一个进程并忘记,而不看它或关心它何时结束,那么您已经使用的 ( spawn
) 会执行此操作。
如果您想真正做到一劳永逸,您需要指定该detached
选项,这样子进程就不会在您的进程终止时被杀死。从文档:
如果
detached
设置了该选项,则子进程将成为新进程组的领导者。这使得子进程可以在父进程退出后继续运行。
再往下看,显然你也必须unref
这样做:
默认情况下,父级将等待分离的子级退出。要防止父级等待给定的子级,请使用该
child.unref()
方法,并且父级的事件循环不会将子级包含在其引用计数中。
stdio
显然要处理:
使用该
detached
选项启动长时间运行的进程时,该进程将不会在后台保持运行,除非它提供了stdio
未连接到父进程的配置。如果继承父级的 stdio,则子级将保持连接到控制终端。
所以:
spawn('node', ['./file.js'], {
detached: true,
stdio: [ 'ignore', 'ignore', 'ignore' ]
}).unref();