Что такое эквивалент popen для чтения и записи дочернего процесса в Windows? - PullRequest
1 голос
/ 23 сентября 2008

Стандартный модуль Ruben popen3 не работает в Windows. Есть ли поддерживаемая замена, которая позволяет разделить stdin, stdout и stderr?

Ответы [ 2 ]

5 голосов
/ 23 сентября 2008

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 голос
/ 22 июня 2010

popen3 работает с MRI 1.9.x на окнах. Смотри http://en.wikibooks.org/wiki/Ruby_Programming/Running_Multiple_Processes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...