我正在Ruby中实现一个检查系统。它使用不同的测试运行可执行文件。如果解决方案不正确,可能需要永远完成某些硬测试。这就是我想将执行时间限制在5秒的原因。
我正在使用system()函数来运行可执行文件:
system("./solution");
.NET有一个很棒的WaitForExit()
方法,那么Ruby呢?
有没有办法将外部进程的执行时间限制为5秒?
由于
答案 0 :(得分:11)
您可以使用标准超时库,如下所示:
require 'timeout'
Timeout::timeout(5) { system("./solution") }
这样您就不必担心同步错误了。
答案 1 :(得分:4)
分叉你的孩子执行“./solution”,睡觉,检查它是否完成,如果没有杀死它。这应该可以帮到你。
pid = Process.fork{ system("./solution")}
sleep(5)
Process.kill("HUP", pid)