什么是相当于在Windows中读取和写入子进程的popen?

时间:2008-09-23 16:27:19

标签: windows ruby

Ruby的标准popen3模块在Windows上不起作用。是否有维护的替换,允许分离stdin,stdout和stderr?

2 个答案:

答案 0 :(得分:5)

POpen4 gem在unix和Windows之间有一个通用接口。以下示例(来自他们的网站)就像一个魅力。

require 'rubygems'
require 'popen4'

status =
  POpen4::popen4("cmd") do |stdout, stderr, stdin, pid|
    stdin.puts "echo hello world!"
    stdin.puts "echo ERROR! 1>&2"
    stdin.puts "exit"
    stdin.close

    puts "pid        : #{ pid }"
    puts "stdout     : #{ stdout.read.strip }"
    puts "stderr     : #{ stderr.read.strip }"
  end

puts "status     : #{ status.inspect }"
puts "exitstatus : #{ status.exitstatus }"

答案 1 :(得分:1)