كيفية بث مباشر الإخراج من البرنامج النصي روبي باستخدام عملية الطفل.تفرخ
-
20-12-2019 - |
سؤال
مما أفهمه ، يجب أن ينجح هذا ، لكن لا حظ لي حتى الآن.نشر هذا السؤال على أمل أن أفعل شيئا سخيفا حقا.لدي:
أهلاً.الميزانية العادية
#!/usr/bin/env ruby
3.times do
puts 'hello'
sleep 1
end
الذيل.شبيبة
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 مرحبا إلى ستدوت ، ولكن بعد, ، تكتمل الحلقة.يمكنك التحقق من ذلك عن طريق تغيير 3.times
فقط loop
لحلقة لا نهائية ورؤية أي شيء في stdout
.حالة الحلقة اللانهائية هي في الواقع ما أحاول معرفة كيفية القيام به.
ماذا أفعل خطأ?
المحلول
يجب أن تحاول إما إضافة $stdout.flush
بعد الخاص بك puts
أو عن طريق الإعداد $stdout.sync = true
في بداية السيناريو روبي الخاص بك.
لا تنتمي إلى StackOverflow