0
我試圖創建將執行過程,並在2秒後會殺死它的功能:RLIMIT_CPU不工作的產卵呼叫
def execute(command, input_file, output_file)
pid = Kernel.spawn(command,{
STDIN => input_file,
STDOUT => output_file,
:rlimit_cpu => [2,2], #2 secs,
:rlimit_nproc => 0,
:rlimit_as => 16 * 1024 * 1024
}
);
Process.wait(pid)
puts "exit status = " + $?.exitstatus.to_s
return File.read(output_file)
end
我測試了短時間運行流程和長時間運行的流程這一功能(帶有「睡眠」呼叫)。該命令總是完成。我需要的是重生的呼叫使用RLIMIT_CPU 2秒後殺死了「命令」。我該怎麼做?
編輯:好像RLIMIT_CPU不工作,因爲我以爲。據this question:
CPU限制是在CPU秒的限制,而不是過去的時間
另外:
當你做對FIB電話,你捶了CPU使經過並且CPU時間接近(大部分處理時間用於使用CPU)。因爲大部分時間都花在I/O上,所以打印時並非如此。
我將使用另一種方法,因爲我需要殺死過程無論過程是否CPU綁定或IO結合