How to exit a process run with Ruby if it takes more than 5 seconds?
-
14-10-2019 - |
Question
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
Solution
You can use the standard timeout library, like so:
require 'timeout'
Timeout::timeout(5) { system("./solution") }
This way you wont have to worry about synchronization errors.
OTHER TIPS
Fork your child which executes "./solution", sleep, check if its done, if not kill it. This should get you started.
pid = Process.fork{ system("./solution")}
sleep(5)
Process.kill("HUP", pid)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow