我有一个 Ruby 脚本,它生成一个进程并使用 expect 等待输入请求,提供该输入,然后在进程完成时生成一个新进程。
最初的问题是脚本没有等待第一个进程完成,而是执行了脚本中的下一行。
所以我将 Process.wait(pid) 添加到脚本中,但现在脚本挂起等待第二个PTY.spawn
at的输入Process.wait(pid)
。
我正在使用 Ruby 1.9.2 运行脚本,因为我知道在 Ruby 1.8.7 中 存在一些问题。PTY.spawn
脚本如下所示:
#!/usr/bin/env ruby
require 'pty'
require 'expect'
PTY.spawn(" apt-get install policycoreutils ") do |reader, writer, pid|
puts reader.expect(/Do you want to continue/)
writer.printf("Y\n")
Process.wait(pid)
end
PTY.spawn(" apt-get install libmagick9-dev ") do |reader, writer, pid|
puts reader.expect(/Do you want to continue/)
writer.printf("Y\n")
Process.wait(pid)
end
有谁知道为什么脚本会挂在Process.wait(pid)
第二个PTY.spawn
?