人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linux(RHEL4)において、Ruby(1.8.1)スクリプトから
バックグラウンドで実行した処理が終了したことを
検知する方法はありますでしょうか?

現在は、以下のように1秒毎にプロセスをチェックして
その個数を数えることで検知していますが、
毎秒確認するのもなんとなく効率が悪い気がしたので、
質問させていただきました。

#! /usr/bin/ruby -w

def main
system("vmstat 1 10 > /dev/null &")
loop {
sleep 1
process_count = `pgrep vmstat | wc -l`.chomp.to_i
if process_count == 0 then
puts "vmstat finished"
break
end
}
end

main

__END__

Ruby初心者なので、実装例などあればとてもうれしいです。

よろしくお願いします。


●質問者: kenk
●カテゴリ:コンピュータ
✍キーワード:def Linux LOOP Ruby to_i
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tmasao
●60ポイント

そういうときは、fork を使うのでは?

fork do
 # この中は子プロセスだけの動作
 system("vmstat 1 10 > /dev/null")
end
# こちらは親プロセスが並列で動作
Process.wait
puts "vmstat finished"

Ruby初心者というよりは Unixプログラミングの入門書などを見てみることをおすすめします。

◎質問者からの返答

ありがとうございます。

今後のヒントになりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ