У меня есть сценарий Ruby, который порождает процесс и использует ожидание ожидания запроса на ввод, предоставление этого ввода, а затем, когда процесс завершен, для создания нового процесса.
Изначально проблема заключалась в том, что скрипт не ждал завершения первого процесса и выполнял следующую строку в скрипте.
Поэтому я добавил в скрипт Process.wait(pid), но теперь скрипт зависает в ожидании ввода на втором PTY.spawn
в Process.wait(pid)
.
Я запускаю скрипт с Ruby 1.9.2, поскольку я знаю, что были некоторые проблемы с PTY.spawn
в Ruby 1.8.7.
Скрипт выглядит так:
#!/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
?