Я читаю серийное устройство с использованием встроенного linux (angstrom) с использованием open(), tcget/setattr(), read(). Я могу читать и писать данные просто отлично. Однако устройство, которое я читаю, отображает приглашение, которое не завершается новой строкой. Это означает, что я не могу прочитать приглашение до тех пор, пока я не приведу к тому, что устройство отправит какой-либо другой результат, который имеет новую строку в конце. В принципе, я знаю, что строка приглашения («COM3>») сидит в буфере tty, ожидая, когда устройство отправит новую строку. read() не будет обращаться к строке приглашения «COM3>» до появления новой строки. Есть ли способ изменить силу read(), чтобы получить данные в буфере до прибытия новой строки?Как я могу прочитать вход терминала на устройстве tty до появления новой строки?
Благодаря
Терминальный вывод никогда не зацикливается на уровне драйвера tty. Я подозреваю, что вы используете stdio, и именно там происходит буферизация. Либо используйте низкоуровневые io ('write') или' fflush' или 'setbuf' для отключения буферизации. –
@R .: Это не так. В каноническом режиме, по умолчанию, терминальное устройство буферизируется по строке. – caf
** Вход ** буферизируется в каноническом режиме. Выход нет. Теперь, когда вы упомянули об этом, вопрос OP действительно неясен относительно того, какая часть (вход или выход) работает не так, как ожидалось ... –