読者です 読者をやめる 読者になる 読者になる

子プロセスの実行を3秒で止めたい

Ruby

limit.rbとかをこんな感じで

pid = fork {
  exec ARGV[1]
}
sleep(ARGV[0].to_i)
Process::kill(2, pid)

作っておいて、

IO.popen('ruby limit.rb 3 "gosh ..."') { |io|
  ...
}

で、うまく行くような予感。

Process::setrlimit*1だと、CPU時間しか計れないので、getsとかで固まってるプログラムは殺せない。