У меня возникли проблемы с захватом событий для дочернего процесса в node.js. Процесс выполняется правильно и завершается, когда все сделано, так что все в порядке. Stdout также правильно работает, поэтому я вижу, что выходной сигнал прекрасен. К сожалению, ни один из моих обработчиков событий не срабатывает, что затрудняет выполнение моего обратного вызова при выполнении этого процесса. Мой код ниже:node.js child_process.spawn - выполняется процесс, но события не срабатывают
var child = child_process.spawn('node',
['processor', reportId.toString()],
{ cwd:cwd, stdio:'pipe', env:env });
child.on('data', function(data) {
console.log('Received data...');
console.log(data.toString('utf8'));
});
child.on('message', function(message) {
console.log('Received message...');
console.log(message);
});
child.on('close', function(code) {
console.log('Child process closed');
});
child.on('disconnect', function(code) {
console.log('Child process disconnected');
callback();
});
child.on('exit', function(code) {
console.log('Child exited with code ' + code);
callback();
});
child.stderr.pipe(process.stderr, { end:true });
child.stdout.pipe(process.stdout, { end:true });
Я уверен, что я делаю что-то неправильно, но ни один из документов не кажется, предлагает ключ к пониманию того, что проблема может быть. Есть идеи?
Я запускаю узел 0.10.8 на Windows.
Спасибо за помощь. Похоже, что также полезно проверить свое предположение о том, что дочерний процесс фактически завершается! В моем случае что-то мешало ему закрыться, что означало, что ни одно из ожидаемых событий не стреляло. –
fork может лучше вписаться в вашу ситуацию, так как вам нужна связь между родительскими и дочерними процессами. Вот модуль, который я написал, который упростил его: https://npmjs.org/package/farmhand –