This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Driving an External Process with popen | ||
|---|---|---|
| Code | Expected | Actual |
%x{whoami} |
"leonardr\n" | "leonardr\n" |
puts %x{ls -a empty_dir} |
. .. |
|
IO.popen('tail -3', 'r+') do |pipe|
1.upto(100) { |i| pipe << "This is line #{i}.\n" }
pipe.close_write
puts pipe.read
end |
This is line 98. This is line 99. This is line 100. |
This is line 98. This is line 99. This is line 100. |
IO.popen('-', 'r+') do |child_filehandle|
if child_filehandle
$stderr.puts "I am the parent: #{child_filehandle.inspect}"
child_filehandle.puts '404'
child_filehandle.close_write
puts "My child says the square root of 404 is #{child_filehandle.read}"
else
$stderr.puts "I am the child: #{child_filehandle.inspect}"
number = $stdin.readline.strip.to_i
$stdout.puts Math.sqrt(number)
end
end |
I am the child: nil I am the parent: #<IO:0xb7d25b9c> My child says the square root of 404 is 20.0997512422418 |
My child says the square root of 404 is |