我想测试一个进程是否正常运行所以我运行:
cmd = "my unix command"
results = `#{cmd}`
Run Code Online (Sandbox Code Playgroud)
如何为命令添加超时,以便如果超过x秒,我可以认为它不起作用?
Ruby发布了Timeout模块.
require 'timeout'
res = ""
status = Timeout::timeout(5) {res = `#{cmd}`} rescue Timeout::Error
# a bit of experimenting:
res = nil
status = Timeout::timeout(1) {res = `sleep 2`} rescue Timeout::Error
p res # nil
p status # Timeout::Error
res = nil
status = Timeout::timeout(3) {res = `sleep 2`} rescue Timeout::Error
p res # ""
p status # ""
Run Code Online (Sandbox Code Playgroud)