Sha256: 41926d626e871cc4f015bbb3d67be3959c8702ea11bfa07968e50ef27fb15b67

Contents?: true

Size: 629 Bytes

Versions: 34

Compression:

Stored size: 629 Bytes

Contents

require 'open4'

def show_failure
  fork{ yield }
  Process.wait
  puts
end

#
# command timeout
#
  show_failure{
    open4.spawn 'sleep 42', 'timeout' => 1
  }

#
# stdin timeout
#
  show_failure{

    producer = 'ruby -e" STDOUT.sync = true; loop{sleep(rand+rand) and puts 42} " 2>/dev/null'

    consumer = 'ruby -e" STDOUT.sync = true; STDIN.each{|line| puts line} "'

    open4(producer) do |pid, i, o, e|
      open4.spawn consumer, 0=>o, 1=>STDOUT, :stdin_timeout => 1.4
    end
  }

#
# stdout timeout (stderr is similar)
#

  show_failure{
    open4.spawn 'ruby -e"  sleep 2 and puts 42  "', 'stdout_timeout' => 1
  }

Version data entries

34 entries across 34 versions & 4 rubygems

Version Path
ahoward-open4-1.0.0 samples/timeout.rb
open4-1.3.4 samples/timeout.rb
open4-1.3.3 samples/timeout.rb
open4-1.3.2 samples/timeout.rb
open4-1.3.1 samples/timeout.rb
open4-1.3.0 samples/timeout.rb
open4-1.2.0 samples/timeout.rb
open4-1.1.0 samples/timeout.rb
crazy_ivan-1.2.4 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
crazy_ivan-1.2.3 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
crazy_ivan-1.2.2 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
crazy_ivan-1.2.1 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
crazy_ivan-1.2.0 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
crazy_ivan-1.1.1 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
crazy_ivan-1.1.0 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
crazy_ivan-1.0.0 lib/crazy_ivan/vendor/open4-1.0.1/samples/timeout.rb
ginst-2009.12.8 vendor/gems/open4-1.0.1/samples/timeout.rb
ginst-2009.11.24 vendor/gems/open4-1.0.1/samples/timeout.rb
ginst-2009.11.23 vendor/gems/open4-1.0.1/samples/timeout.rb
ginst-2.0.1 vendor/gems/open4-1.0.1/samples/timeout.rb