如果您不熟悉CoffeeScript,here是下面提到的p1.coffee
和p2.coffee
的JavaScript版本。
将node.js脚本stdout
管道传输给另一个人的stdin似乎无法正常工作。我p1.coffee
尽可能快地将数字输出到stdout
:
i = 0
(->
i += 1
process.stdout.write "#{i} "
)() while true
我现在有p2.coffee
,它确实像cat
那样:
process.stdin.on 'end', -> console.log "EOF"
process.stdin.pipe(process.stdout)
现在如果我将它们组合在一起,它只显示第一个数字和#34;块"有:
> coffee p1.coffee | coffee p2.coffee
1
如果重要的话,我在Windows上使用节点v0.10.31。
答案 0 :(得分:2)
这可能是 Windows 特定问题。我在 OS X 上使用 Node.js v0.10.31 尝试了以下操作,它运行良好:
// cat.js
process.stdin.once('end', function () {
console.log('EOF');
});
process.stdin.pipe(process.stdout);
// count.js
var i = 0;
while (true) {
process.stdout.write(i++ + ' ');
}
并将 count.js 的输出传送到 cat.js :
node count.js | node cat.js
另请注意,您的CoffeeScript会编译为:
var i;
i = 0;
while (true) {
(function() {
i += 1;
return process.stdout.write("" + i + " ");
})();
}
在循环中创建函数会使代码变慢。你可以改为:
i = 0
loop process.stdout.write("#{i += 1} ")