【发布时间】:2015-09-13 00:01:56
【问题描述】:
所以,我有一个简单的应用程序(我写过),它写信给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!
是的,就是这样。
发生了什么事?我错过了什么吗?
【问题讨论】:
-
“结束”事件不会给你任何内容。
-
当我将
spawn()更改为spawn("sh", ["-c", "echo hello world"])时,它对我来说效果很好,尽管我在数据之前收到了“关闭”事件。 -
好吧,
end甚至 确实 着火了。stdout.on('data',...)部分不是... -
您确定您的应用程序代码正确刷新了其输出缓冲区吗? (不太可能是这种情况,但子进程的东西非常接近底层系统调用的原始包装器。)
-
嗯...我是吗?这是个好问题。这是一个 Objective-C 终端应用程序,
fprintfing 到stdout... 让我仔细检查一下。
标签: javascript node.js macos process spawn