URLS: |

  http://raa.ruby-lang.org/project/session/
  http://www.codeforpeople.com/lib/ruby/session/


NAME: |

  Session
    ::Sh
    ::Bash
    ::Shell
    ::IDL

SYNOPSIS: |

  Session::* offers a set of classes built upon Open3::popen3 for driving
  external progams via pipes.  It offers a significant abstraction over
  Open3::popen in that the stdout/stderr of each command sent can be deliniated:

    open3:

        i.o,e = Open3::popen3 '/bin/sh'

        i.puts 'ls'
        i.puts 'echo 42'

    now, how to determine the boundry between the output from 'ls' and 'echo'?
    the only (simple) way is start a process for each command

        i.o,e = Open3::popen3 '/bin/sh'
        i.puts 'ls'
        i.close
        stdout, stderr = o.read, e.read

        i.o,e = Open3::popen3 '/bin/sh'
        i.puts 'echo 42'
        i.close
        stdout, stderr = o.read, e.read

    session:

      sh =