在Windows中读写子进程的popen等效项是什么?
时间:2020-03-06 14:36:34 来源:igfitidea点击:
Ruby的标准popen3模块在Windows上不起作用。是否有可维护的替代品,以允许分离stdin,stdout和stderr?
解决方案
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 }"
popen3在Windows上与MRI 1.9.x兼容。参见http://en.wikibooks.org/wiki/Ruby_Programming/Running_Multiple_Processes