2つの個別のノードアプリケーションがあります。コードのある時点で、もう一方を起動できるようにしたいのですが。これをどうやってやるの?
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()
を呼び出す必要があります。
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