gpt4 book ai didi

javascript - 将 Node.js 脚本的标准输出通过管道传输到另一个脚本的标准输入不起作用

转载 作者:行者123 更新时间:2023-12-02 17:01:13 29 4
gpt4 key购买 nike

如果您不熟悉 CoffeeScript,here是下面提到的 p1.coffeep2.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)

现在,如果我将它们连接在一起,它只会显示第一个数字和“ block ”:

> coffee p1.coffee | coffee p2.coffee
1

如果重要的话,我在 Windows 上使用 Node v0.10.31。

最佳答案

这可能是 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} ")

关于javascript - 将 Node.js 脚本的标准输出通过管道传输到另一个脚本的标准输入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25692198/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com