#!/usr/bin/env ruby $:.unshift '.', '..', 'lib', File.join('..','lib') require 'session' tcsh = Session::Tcsh.new puts "======== ======== ======== ========" puts "#1" puts "======== ======== ======== ========" stdout, stderr = tcsh.execute 'ls' puts "STDOUT:\n#{ stdout }" puts "STDERR:\n#{ stderr }" puts "STATUS: #{ tcsh.status }" puts "======== ======== ======== ========" puts "======== ======== ======== ========" puts "#2" puts "======== ======== ======== ========" tcsh.execute 'ls' do |stdout, stderr| puts "STDOUT:\n#{ stdout }" puts "STDERR:\n#{ stderr }" end puts "STATUS: #{ tcsh.status }" puts "======== ======== ======== ========" puts "======== ======== ======== ========" puts "#3" puts "======== ======== ======== ========" stdout, stderr = '', '' tcsh.execute 'ls', :stdout => stdout, :stderr => stderr puts "STDOUT:\n#{ stdout }" puts "STDERR:\n#{ stderr }" puts "STATUS: #{ tcsh.status }" puts "======== ======== ======== ========" puts "======== ======== ======== ========" puts "#4" puts "======== ======== ======== ========" tcsh.outproc = lambda{|out| puts "#{ out }"} tcsh.errproc = lambda{|err| raise err} tcsh.execute('while ( 1 ); echo 42; sleep 1; end') # => 42 ... 42 ... 42 puts "======== ======== ======== ========"