Ruby komut dosyasım, bir kabuk komutu çalıştırıyor ve çıktıyı buradan ayrıştırıyor. Ancak, komutun ilk çalıştırıldığı ve çıktının bir diziye kaydedildiği görülüyor. Çıktı çizgilerine, basılı oldukları gibi gerçek zamanlı olarak erişmek istiyorum. Konuyla uğraştım ama işe yaramadı. Baska öneri?Ruby, çıktı olarak kabuk komutlarından çıktılara erişebilir mi?
12
A
cevap
21
borular borularını arıyorsunuz. Daha sonra, çağrı yöntemleri/işlevleri sistemi/kabuk komutları çalıştırmak için
# This example runs the netstat command via a pipe
# and processes the data in Ruby as it come back
pipe = IO.popen("netstat 3")
while (line = pipe.gets)
print line
print "and"
end
0
, senin tercüman ve aynı işlemi bitirmek için bekler çalıştırmak için başka bir işlem olarak çoğaltılır size çıktıyı verir: İşte bir örnek.
İş parçacığı kullansanız bile, tek yapmanız gereken, komutunuzun çalışması sırasında programınızın askıda kalmasına izin vermemekle birlikte, çıktı bitene kadar çıktınız.
Sanırım bunu borularla gerçekleştirebilirsiniz, ancak nasıl yapacağımı bilmiyorum.
@Marcel bunu başardı.
Mükemmel cevap, çok teşekkürler! – Ciryon
Çıktı aslında komut tamamlanana kadar arabelleğe alınır, sonra gerçek zamanlılığı önemsemezseniz çıktıyı görürsünüz. – user180574