Sha256: 3a3f1bb511ad17f331f6bc7be5a90b4dd482da4d82e441fd9f443040d8a38fd2
Contents?: true
Size: 555 Bytes
Versions: 1
Compression:
Stored size: 555 Bytes
Contents
module SafeTimeout class InterruptingChildProcess 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 def notify_parent_of_expiration SafeTimeout.send_signal('TRAP', @ppid) end def wait_for_timeout Signal.trap('HUP') { exit 0 } sleep [@expiration - Time.now.to_f, 0.1].max notify_parent_of_expiration end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
safe_timeout-1.0.0 | lib/safe_timeout/interrupting_child_process.rb |