Я пишу код, который берет файл, передает этот файл в один из нескольких исполняемых файлов для обработки и отслеживает процесс преобразования для ошибок. Я написал и протестировал следующую процедуру на 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
}
Выполняемая команда сильно варьируется, и код в значке ## был упрощен в локальное эхо в попытке отладить проблему. Выполняется команда, а script печатает ожидаемый вывод в терминале и затем выдает исключение.
Ошибка, которую он производит в системах Debian, составляет: Errno::EIO (Input/output error - /dev/pts/0):
Во всех командных строках я могу придумать эту ошибку, и когда я запускаю код без локального блока эха, он работает просто отлично:
PTY.spawn(command) {|r,w,pid|}
В любом случае сама команда выполняется отлично, но похоже, что debian linux не отправляет eof pty. Страницы документа для PTY и IO на ruby-doc, похоже, здесь не помогают.
Любые предложения? Спасибо.
-vox -