我在node.js中捕获子进程的事件时遇到问题.这个过程运行正常,并在完成后退出,所以一切都很好.Stdout也正确管道,所以我可以看到输出正常.不幸的是,我的事件处理程序都没有触发,这使得我很难在进程完成时运行我的回调.我的代码如下:
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 });
Run Code Online (Sandbox Code Playgroud)
我确定我做错了,但是没有任何文档似乎提供了问题可能是什么的线索.有任何想法吗?
我在Windows上运行节点0.10.8.
Spawn没有在fork中内置的相同ipc通道,因此除非启用它,否则不会触发消息事件:
var child = child_process.spawn('node', ['processor', reportId.toString()],{
cwd:cwd,
env:env,
stdio:['ipc'] //enable ipc channel
});
Run Code Online (Sandbox Code Playgroud)
该数据的事件应该是孩子,而不是孩子本身的标准输出:
child.stdout.on('data', function(data) {
console.log('Received data...');
console.log(data.toString('utf8'));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4583 次 |
| 最近记录: |