Getting output of system() calls in Rubyに似ていますが、私はシステムコマンドを実行していますが、この場合は実行時にコマンドからSTDOUTを出力する必要があります。実行中にruby system()コールのSTDOUTを取得するにはどうすればよいですか?
9
A
答えて
13
リンクされた質問と同様に、答えはsystem
を使用しないでください。system
はこれをサポートしていません。
今回は、backticks
ではなく、IO.popen
を使用して、生成された入力を読み取るために使用できるIOオブジェクトを返します。
+7
ありがとう、 私は 'IO.popen( 'command_to_run '){| io | while(line = io.gets)は行末を置く} ' –
0
は、ここに私の解決策
def io2stream(shell, &block)
Open3.popen3(shell) do |_, stdout, stderr|
while line = stdout.gets
block.call(line)
end
while line = stderr.gets
block.call(line)
end
end
end
io2stream("ls -la", &lambda { |str| puts str })
関連する問題
- 1. RubyでFFIコールのSTDOUTを変更するにはどうすればよいですか?
- 2. 実行中にスペースを読み取れるようにするにはどうすればよいですか?
- 3. Googleクラウドで実行中のVMでイメージを取得するにはどうすればよいですか?
- 4. ラベル内で実行中のバッチファイルの名前を取得するにはどうすればよいですか?
- 5. 私のアプリケーションで現在実行中のアクティビティを取得するにはどうすればよいですか?
- 6. ScheduledThreadPoolExecutorで実行中のジョブを取得するにはどうすればよいですか?
- 7. 実行中のフレックスアプリケーションでサーバーエンドポイントを取得するにはどうすればよいですか?
- 8. 同じajaxコールでajaxコールbeforeSendのデータを取得するにはどうすればよいですか?
- 9. Qt:現在実行中のウィンドウを取得するにはどうすればよいですか?
- 10. 進行中のトランザクションなしで外部コールを行うにはどうすればよいですか?
- 11. Bazelによって実行されるコマンドを取得するにはどうすればいいですか?
- 12. デプロイ中にテストが実行されないようにするにはどうすればよいですか?
- 13. テストクラスの実行中にマネージトリガの実行を停止するにはどうすればよいですか?
- 14. stdoutの特定のセクションを取得するにはどうすればよいですか?
- 15. Swift 2でSKSpriteNodeの実際の中心を取得するにはどうすればよいですか?
- 16. Dockerで実行中のKarafでコマンドを実行するにはどうすればよいですか?
- 17. サーバスクリプトの実行時にappmakerでモデルのリストを取得するにはどうすればよいですか?
- 18. 現在実行中のLinuxプロセスをバックグラウンドで実行するにはどうすればよいですか?
- 19. スクリプトを実行するために_received_iCalイベントを取得するにはどうすればよいですか?
- 20. テストの実行中にMANIFEST.MFファイルを読み取るにはどうすればよいですか?
- 21. "/ system/media/audio/ringtones"へのパスをAndroidでプログラムで取得するにはどうすればいいですか?
- 22. プロジェクトごとにrbenvではなくsystem Rubyを使用するにはどうすればいいですか?
- 23. このRubyメソッドをより高速に実行するにはどうすればよいですか?
- 24. 実行時に自分のdylibへのパスを取得するにはどうすればよいですか?
- 25. 実行時にパラメータの名前の型を取得するにはどうすればよいですか?
- 26. docker-composeで実行しているsplunk loggerを取得するにはどうすればよいですか?
- 27. 複数のajaxコールからデータを取得するにはどうすればよいですか?
- 28. JavaScript ajaxコールでPHPパススルーからバイナリデータを取得するにはどうすればよいですか?
- 29. バッチスクリプトでExecコールからResultCodeを取得するにはどうすればよいですか?
- 30. 実行時にコントロールの種類を取得するにはどうすればよいですか?
それはあなたが特別な何かをしなければならないという好奇心旺盛だです。私の経験では、 'system'を使ってプログラムを実行すると、子プログラムのstdoutが親プログラムのstdoutに行きます。これはあなたが望むものです。 –
これも動作する可能性があります:http://stackoverflow.com/questions/2215455/printing-to-screen-in-a-rake-task/2215986#2215986 –