据我所知,这应该可行,但到目前为止我运气不佳。发布这个问题希望我在做一些非常愚蠢的事情。我有:
你好.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被打印到stdout,但在之后,循环就完成了。您可以通过将无限循环的3.times
更改为仅loop
来验证这一点,而在stdout
中看不到任何内容。无限循环的情况实际上是我试图弄清楚如何做的
我做错了什么?
您应该尝试在puts
之后添加$stdout.flush
,或者在ruby脚本的开头设置$stdout.sync = true
。