如何使用child_process.spawn从ruby脚本生成流输出

时间:2014-04-10 23:40:28

标签: ruby node.js child-process

根据我的理解,这应该有用,但到目前为止我没有运气。发表这个问题,希望我做的事情真的很傻。我有:

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个hellos被打印到stdout,但之后,循环完成。您可以通过将3.times更改为仅loop进行无限循环并在stdout中看不到任何内容来验证这一点。无限循环的情况实际上是我试图弄清楚该怎么做。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您应该尝试在$stdout.flush之后添加puts,或者在ruby脚本的开头设置$stdout.sync = true