プロセスを生成し、入力の要求を待機し、その入力を提供し、プロセスが終了すると、新しいプロセスを生成することを期待する Ruby スクリプトがあります。
最初の問題は、スクリプトが最初のプロセスが終了するのを待たず、スクリプトの次の行を実行することでした。
そのため、スクリプトに Process.wait(pid) を追加しましたが、スクリプトは 2 番目の入力を待ってハングPTY.spawn
しProcess.wait(pid)
ます。
Ruby 1.8.7 で いくつかの問題PTY.spawn
があったことを知っているので、Ruby 1.9.2 でスクリプトを実行しています。
スクリプトは次のようになります。
#!/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)
2 番目に停止する理由を知っている人はいますPTY.spawn
か?