私の Node.js (v0.10.9) コードでは、次の 2 つのケースを検出しようとしています。
- 外部ツール(ドット)がインストールされている - その場合、作成されたプロセスの stdin にデータを送信したい
- 外部ツールがインストールされていません - その場合、警告を表示したいのですが、プロセスの stdin には何も送信したくありません
私の問題は、プロセスが正常に生成された場合 (つまり、stdin が書き込みの準備ができている場合) にのみ、データを子の stdin に送信する方法がわからないことです。次のコードは、ドットがインストールされている場合は正常に機能しますが、それ以外の場合は、子が生成されていないにもかかわらず、子にデータを送信しようとします。
var childProcess = require('child_process');
var child = childProcess.spawn('dot');
child.on('error', function (err) {
console.error('Failed to start child process: ' + err.message);
});
child.stdin.on('error', function(err) {
console.error('Working with child.stdin failed: ' + err.message);
});
// I want to execute following lines only if child process was spawned correctly
child.stdin.write('data');
child.stdin.end();
私はこのようなものが必要だろう
child.on('successful_spawn', function () {
child.stdin.write('data');
child.stdin.end();
});