Инициализация структуры 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;
Другие вопросы по тегам