使用node.js启动另一个节点应用程序?

Hyd*_*mal 36 javascript child-process node.js

我有两个单独的节点应用程序.我希望其中一个能够在代码中的某个时刻启动另一个.我该怎么做呢?

hex*_*ide 45

使用child_process.fork().它类似于spawn(),但用于创建V8的全新实例.因此它专门用于运行Node的新实例.如果您只是执行命令,则使用spawn()exec().

var fork = require('child_process').fork;
var child = fork('./script');
Run Code Online (Sandbox Code Playgroud)

请注意,在使用时fork(),默认情况下,stdio流与父关联.这意味着所有输出和错误都将显示在父进程中.如果您不希望与父级共享流,则可以stdio在选项中定义属性:

var child = fork('./script', [], {
  stdio: 'pipe'
});
Run Code Online (Sandbox Code Playgroud)

然后,您可以与主进程的流分开处理该进程.

child.stdin.on('data', function(data) {
  // output from the child process
});
Run Code Online (Sandbox Code Playgroud)

另请注意,该过程不会自动退出.您必须process.exit()从生成的Node进程中调用它才能退出.

  • 参数作为第二个参数作为数组传递.所以它就像这样:`fork('./ script,['arg1','arg2']);`如果你的意思是在孩子被生成后传递变量,使用`child.send()`并听在`process.on('message',function(message){})的孩子中;`. (5认同)
  • 谢谢!有没有办法让我将参数传递给子进程 - 比如从父应用程序发送变量? (3认同)
  • 您好,您知道是否有办法测试nodejs子进程是否正在运行?- 谢谢! (2认同)