我有两个独立的节点应用程序。我希望其中一个能够在代码中的某个位置启动另一个。我该怎么做呢?
问问题
23239 次
2 回答
47
使用child_process.fork()
. 它类似于spawn()
,但用于创建 V8 的全新实例。因此它专门用于运行 Node 的新实例。如果您只是在执行命令,请使用spawn()
or exec()
。
var fork = require('child_process').fork;
var child = fork('./script');
请注意,使用 时fork()
,默认情况下,stdio
流与父级关联。这意味着所有输出和错误都将显示在父进程中。如果您不希望与父级共享流,可以stdio
在选项中定义属性:
var child = fork('./script', [], {
stdio: 'pipe'
});
然后,您可以将流程与主流程的流分开处理。
child.stdin.on('data', function(data) {
// output from the child process
});
另请注意,该过程不会自动退出。您必须process.exit()
从生成的 Node 进程中调用它才能退出。
于 2013-09-18T01:01:51.640 回答
3
您可以使用 child_process 模块,它将允许执行外部进程。
var childProcess = require('child_process'),
ls;
ls = childProcess.exec('ls -l', function (error, stdout, stderr) { if (error) {
console.log(error.stack);
console.log('Error code: '+error.code);
console.log('Signal received: '+error.signal); } console.log('Child Process STDOUT: '+stdout); console.log('Child Process STDERR: '+stderr); });
ls.on('exit', function (code) { console.log('Child process exited with exit code '+code); });
http://docs.nodejitsu.com/articles/child-processes/how-to-spawn-a-child-process
于 2013-09-18T01:04:16.503 回答