代码之家  ›  专栏  ›  技术社区  ›  Max Caceres

在Windows中,popen等同于读写子进程的是什么?

  •  1
  • Max Caceres  · 技术社区  · 18 年前

    Ruby的标准popen3模块不能在Windows上工作。是否存在允许分离stdin、stdout和stderr的维护替换?

    2 回复  |  直到 14 年前
        1
  •  5
  •   rogerdpack    14 年前

    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 }"
    
        2
  •  1
  •   rogerdpack    14 年前

    Popen3与Windows上的mri 1.9.x配合使用。见 http://en.wikibooks.org/wiki/Ruby_Programming/Running_Multiple_Processes