Search code examples
rubyprocessexecution-time

How to exit a process run with Ruby if it takes more than 5 seconds?


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.