2015-09-13 127 views
1

所以,我有一个简单的应用程序(我写了)写入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! 

是的,就是这样。

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

+0

“结束”事件不会给你任何内容。 – Pointy

+0

当我更改'spawn()'为'spawn(“sh”,[“-c”,“echo hello world”])时,它对我来说很好,但我在数据之前得到了“关闭”事件。 – Pointy

+0

那么,'末端'甚至会*火。 'stdout.on('data',...)'部分不是... –

回答

2

确保你的标准输入输出输出缓冲器在你的申请被刷新:

fflush(stdout); // or something like that 

直接输出到TTY具有比输出到管道缓冲较少。

+0

谢谢队友! ;) –

+0

@ Dr.Kameleon没有问题 - 有趣的机会,使用一些我已经忘记的东西,我甚至知道:) – Pointy

+0

麻烦的是,我也忘记了。我想有这样的时候,这一切都回来了......哈哈。 –