我想在有限的时间内通过ruby运行二进制文件。在我的情况下,它的airodump-ng
具有完整的命令:
airodump-ng -c <mychan> mon0 --essid "my_wlan" --write capture
对于那些不了解airdump-ng
正常的人,它会启动并且不会自行终止。如果用户没有通过按Strg + C来阻止它,它将永远运行。这不是bash的问题,而是通过ruby执行它会导致严重的麻烦。有没有办法限制system
方法运行二进制文件的时间?
答案 0 :(得分:2)
尝试超时库:
require 'timeout'
begin
Timeout.timeout(30) do
system('airodump-ng -c <mychan> mon0 --essid "my_wlan" --write capture')
end
rescue Timeout::Error
# timeout
end
答案 1 :(得分:1)
您可以使用Ruby spawn
方法。来自Ruby文档:
此方法类似于#system,但它不会等待命令完成。
这样的事情:
# Start airodump
pid = spawn('airodump-ng -c <mychan> mon0 --essid "my_wlan" --write capture')
# Wait a little while...
sleep 60
# Then stop airodump (similar to pressing CTRL-C)
Process.kill("INT", pid)