Инициализация структуры termios для работы в качестве VT100
Я пытаюсь написать программу, похожую на shell, но в сочетании с эмулятором терминала. Причина в том, что я не могу очистить буфер записи для отправки данных в программу или программа проверяет, что ввод / вывод - это канал.
Проблема заключается в настройке структуры termios. Я хотел бы, чтобы мой псевдотерминал работал как стандартный терминал Linux, и он должен работать с опросом, записью и чтением.
Я использую функцию openpty и login_tty. Я использую openpty дважды, чтобы открыть стандартный терминал ввода / вывода и терминал stderr.
Благодарю.
1 ответ
Этот код должен работать.
if (openpty(&fds[0], &fds[1], NULL, NULL, NULL) == -1) {
perror("openpty error ");
return;
}
tcgetattr(fds[0], &termios);
termios.c_lflag &= OUR_FLAGS;
tcsetattr(fds[0], TCSANOW, &termios);
Проблема была в том, что я не знаю, какие флаги устанавливает openpty, но похоже, что он правильно настраивает терминал.
Я установил контрольные флаги только для примера. В моем случае я отключил эхо, как это
termios.c_lflag &= ~ECHO;