无法从子进程获取输出

时间:2015-09-13 00:01:57

标签: javascript node.js macos process spawn

所以,我有一个简单的应用程序(我写过)写入stdout

当我单独运行它时,输出正好打印。

现在,当我用节点生成进程时......没有任何反应(除了说明进程已完成的消息)

这是我的代码:

var spawn = require('child_process').spawn;
helper = spawn("myApp", []);
helper.stdout.on('data', function(data) { 
    console.log("GOT: " + data);
});
helper.stdout.on('end', function(data) {
    console.log("FINISHED: " + data);
});
helper.on('exit', function(code) {
    console.log("CLOSED!");
});

这是输出:

FINISHED: undefined
CLOSED!

是的,就是这样。

发生了什么事?我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

确保在应用程序中刷新stdio输出缓冲区:

  fflush(stdout); // or something like that

直接输出到tty的缓冲比输出到管道的缓冲少。