Rubyで子プロセス監視

Rubyで子プロセス監視

Ruby1.9系だと
Process.spawnが一番簡単みたい。

クローラーなんかだと、相手側のサーバーの都合とか、回線の都合とかで
rescue書いておいてもエラー落ちしてたり。
なんで、もし終了してたら再度実行させるみたいなのを簡単に書いておきたかった。

例えば以下のコードをクローラーとして(エラー落ちする可能性ありコードって事で)

2.times{
  puts "test"
  sleep 1
       }

監視コードはこんな感じで書いておけば、エラー落ちしても再起動かけれる
ラクチンだー

def foo
  return Process.spawn("ruby 2times.rb")
end

pid = foo

loop do
  check = Process.waitpid(pid)
  unless check == nil
     pid = foo
  end
  sleep 60
 end