class SafeTimeout::InterruptingChildProcess
Public Class Methods
new(expiration)
click to toggle source
# File lib/safe_timeout/interrupting_child_process.rb, line 4 def initialize(expiration) @ppid = Process.ppid @expiration = expiration.to_f abort "Invalid pid to monitor: #{@ppid}" if @ppid.to_i.zero? abort "Invalid expiration: #{@expiration}" unless @expiration > 0.0 end
Public Instance Methods
notify_parent_of_expiration()
click to toggle source
# File lib/safe_timeout/interrupting_child_process.rb, line 12 def notify_parent_of_expiration SafeTimeout.send_signal('TRAP', @ppid) end
wait_for_timeout()
click to toggle source
# File lib/safe_timeout/interrupting_child_process.rb, line 16 def wait_for_timeout Signal.trap('HUP') { exit 0 } sleep [@expiration - Time.now.to_f, 0.1].max notify_parent_of_expiration end