私の Ruby スクリプトはシェル コマンドを実行し、その出力を解析しています。ただし、コマンドが最初に実行され、出力が配列に保存されているようです。出力行が印刷されるのと同じように、リアルタイムで出力行にアクセスできるようにしたいと考えています。スレッドをいじってみましたが、うまくいきませんでした。助言がありますか?
3908 次
2 に答える
21
あなたはパイプを探しています。次に例を示します。
# 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
于 2010-04-29T22:50:57.077 に答える
0
メソッド/関数を呼び出してシステム/シェルコマンドを実行すると、インタープリターは別のプロセスを生成して実行し、終了するのを待ってから、出力を提供します。
スレッドを使用したとしても、コマンドの実行中にプログラムをハングさせないことだけが達成できますが、完了するまで出力は得られません。
パイプでそれを達成できると思いますが、方法がわかりません。
@マルセルはそれを手に入れました。
于 2010-04-29T22:52:19.777 に答える