我正在尝试使用 Ruby Rake 任务在同一系统进程中运行一些 Windows 命令行调用。我需要找到正确拨打电话的方法,而且这些电话不能相互依赖。
我知道'fork' 功能可以是一个解决方案,但它在 Windows 中不起作用。我尝试了其他功能,比如IO.POPEN
and
Process.spawn
我没有找到真正的解决方案。
我正在使用Ruby 1.9.3
Windows XP。
task :CmdTest,:value do |t, args|
value=args.value.to_s
begin
$cmd<<("set MYVAR=#{value}")
$cmd<<("set MYVAR")
$cmd<<("exit")
rescue Exception => e
puts e.message
end
end
task :CmdTest3 do
IO.popen("cmd", "r+") do |io|
th = Thread.new(io) do |chan|
chan.each {|line| puts line}
end
$cmd.each do |f|
io.puts f
end
io.close_write
th.join
end
end