Mini Shell
--- !ruby/object:RI::MethodDescription
aliases: []
block_params:
comment:
- !ruby/struct:SM::Flow::P
body: Runs the specified command string as a subprocess; the subprocess's standard input and output will be connected to the returned <tt>IO</tt> object. If <em>cmd_string</em> starts with a ``<tt>-</tt>'', then a new instance of Ruby is started as the subprocess. The default mode for the new file object is ``r'', but <em>mode</em> may be set to any of the modes listed in the description for class IO.
- !ruby/struct:SM::Flow::P
body: If a block is given, Ruby will run the command as a child connected to Ruby with a pipe. Ruby's end of the pipe will be passed as a parameter to the block. At the end of block, Ruby close the pipe and sets <tt>$?</tt>. In this case <tt>IO::popen</tt> returns the value of the block.
- !ruby/struct:SM::Flow::P
body: "If a block is given with a <em>cmd_string</em> of ``<tt>-</tt>'', the block will be run in two separate processes: once in the parent, and once in a child. The parent process will be passed the pipe object as a parameter to the block, the child version of the block will be passed <tt>nil</tt>, and the child's standard in and standard out will be connected to the parent through the pipe. Not available on all platforms."
- !ruby/struct:SM::Flow::VERB
body: " f = IO.popen("uname")\n p f.readlines\n puts "Parent is #{Process.pid}"\n IO.popen ("date") { |f| puts f.gets }\n IO.popen("-") {|f| $stderr.puts "#{Process.pid} is here, f is #{f}"}\n p $?\n"
- !ruby/struct:SM::Flow::P
body: <em>produces:</em>
- !ruby/struct:SM::Flow::VERB
body: " ["Linux\\n"]\n Parent is 26166\n Wed Apr 9 08:53:52 CDT 2003\n 26169 is here, f is\n 26166 is here, f is #<IO:0x401b3d44>\n #<Process::Status: pid=26166,exited(0)>\n"
full_name: IO::popen
is_singleton: true
name: popen
params: |
IO.popen(cmd_string, mode="r" ) => io
IO.popen(cmd_string, mode="r" ) {|io| block } => obj
visibility: public
Zerion Mini Shell 1.0