Я пишу код, который берет файл, передает этот файл одному из нескольких двоичных файлов для обработки и отслеживает процесс преобразования на наличие ошибок. Я написал и протестировал следующую процедуру на OSX, но Linux не работает по причинам, которые мне не ясны.
#run the command, capture the output so it doesn't display
PTY.spawn(command) {|r,w,pid|
until r.eof? do
##mark
puts r.readline
end
}
Выполняемая команда сильно различается, а код с отметкой ##был упрощен до локального эха в попытке отладить проблему. Команда выполняется, и сценарий выводит ожидаемый вывод в терминал, а затем выдает исключение.
Ошибка, которую он выдает в системах Debian::Errno::EIO (Input/output error - /dev/pts/0):
Все командные строки, которые я могу придумать, вызывают эту ошибку, и когда я запускаю код без локального блока эха, он работает нормально:
PTY.spawn(command) {|r,w,pid|}
В любом случае сама команда выполняется нормально, но похоже, что debian linux не отправляет eof на pty. Страницы документации для PTY и IO on ruby -doc, похоже, здесь не помогут.
Есть предложения?Спасибо.
-вокс-