web-dev-qa-db-ja.com

node.jsを使用して別のノードアプリケーションを起動しますか?

2つの個別のノードアプリケーションがあります。コードのある時点で、もう一方を起動できるようにしたいのですが。これをどうやってやるの?

35
Hydrothermal

child_process.fork() を使用します。 spawn()に似ていますが、V8の新しいインスタンス全体を作成するために使用されます。したがって、Nodeの新しいインスタンスを実行するために特別に使用されます。コマンドを実行するだけの場合は、spawn()または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
});
_

また、プロセスは自動的に終了しないことに注意してください。終了するには、生成されたNodeプロセス内からprocess.exit()を呼び出す必要があります。

44
hexacyanide

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

3
JustEngland