IO.popen を使用してコマンドを実行し、次のように出力をキャプチャしています。
process = IO.popen("sudo -u service_user -i start_service.sh") do |io|
while line = io.gets
line.chomp!
process_log_line(line)
end
end
*start_service.sh* の終了ステータスを取得するにはどうすればよいですか?
IO.popen を使用してコマンドを実行し、次のように出力をキャプチャしています。
process = IO.popen("sudo -u service_user -i start_service.sh") do |io|
while line = io.gets
line.chomp!
process_log_line(line)
end
end
*start_service.sh* の終了ステータスを取得するにはどうすればよいですか?
$ ? ブロックの最後でパイプを閉じている限り。
上記の例では、次のようにします。
process = IO.popen("sudo -u service_user -i start_service.sh") do |io|
while line = io.gets
line.chomp!
process_log_line(line)
end
io.close
do_more_stuff if $?.to_i == 0
end
詳細については、IO.popenの Ruby Core Library エントリを参照してください。