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结合