根据我的理解,这应该有用,但到目前为止我没有运气。发表这个问题,希望我做的事情真的很傻。我有:
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
中看不到任何内容来验证这一点。无限循环的情况实际上是我试图弄清楚该怎么做。
我做错了什么?
答案 0 :(得分:1)
您应该尝试在$stdout.flush
之后添加puts
,或者在ruby脚本的开头设置$stdout.sync = true
。