如果使用 Ruby 运行的进程超过 5 秒,如何退出?
我正在用 Ruby 实现一个检查系统。它运行具有不同测试的可执行文件。如果解决方案不正确,则可能需要很长时间才能完成某些困难的测试。这就是为什么我想将执行时间限制为 5 秒。
我正在使用 system() 函数来运行可执行文件:
system("./solution");
.NET 有一个很棒的 WaitForExit()
方法,那么 Ruby 呢?
有没有办法将外部进程的执行时间限制为 5 秒?
谢谢
I'm implementing a checking system in Ruby. It runs executables with different tests. If the solution is not correct, it can take forever for it to finish with certain hard tests. That's why I want to limit the execution time to 5 seconds.
I'm using system() function to run executables:
system("./solution");
.NET has a great WaitForExit()
method, what about Ruby?.
Is there a way to limit external process' execution time to 5 seconds?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用标准超时库,如下所示:
这样您就不必担心同步错误。
You can use the standard timeout library, like so:
This way you wont have to worry about synchronization errors.
分叉执行“./solution”的孩子,睡眠,检查它是否完成,如果没有则杀死它。这应该可以帮助您开始。
http://www.ruby-doc.org/core/classes/Process .html#M003153
Fork your child which executes "./solution", sleep, check if its done, if not kill it. This should get you started.
http://www.ruby-doc.org/core/classes/Process.html#M003153