0
从我所了解的情况来看,这应该可行,但对我来说目前还没有运气。发布这个问题希望我做一些非常愚蠢的事情。我有:如何使用child_process.spawn生成从ruby脚本输出流输出
hello.rb的
#!/usr/bin/env ruby
3.times do
puts 'hello'
sleep 1
end
tail.js
var cp = require('child_process');
var tail = cp.spawn('./hello.rb');
tail.stdout.pipe(process.stdout);
/* Also tried this: */
tail.stdout.on('data', function(data) {
console.log(data.toString())
});
hello.rb
是可执行的。
当我运行node tail.js
,3个hello被打印到标准输出,但后,循环完成。您可以通过将更改为loop
进行无限循环验证,并在stdout
中看不到任何内容。无限循环的情况实际上是我试图找出如何去做的。
我在做什么错?
工作,比你!你能补充一点关于那是什么吗? – mehulkar
我还编辑了问题标题/标签,以反映这与ruby比'child_process'或节点有关。 – mehulkar
'$ stdout.flush'刷新当前的stdout缓冲区,因为默认情况下写入stdout是异步的。 '$ stdout.sync = true'切换到同步stdout输出,该输出禁用stdout缓冲区并确保在继续执行之前刷新每个写入。 – mscdex