благополучно принимают и игнорируют любую установленную вами скорость.

int tcsendbreak(int fd, int duration)

Посылает поток нулей в fd, чтобы узнать определенную длительность (duration), которая также известна как разрыв. Если duration равняется 0, разрыв длится не менее 250 и не более 500 миллисекунд. К сожалению, POSIX не определяет элемент, длительность которого измеряется, поэтому единственной переносимой величиной для duration является 0. В Linux длительность увеличивает разрыв; 0 или 1 задают длительность между четвертью секунды и полсекунды; 2 — между полсекунды и секундой и так далее.

int tcdrain(int fd)

Ожидает, пока не передадутся все входные данные, ожидающие в данный момент на файловом дескрипторе fd.

int tcflush(int fd, int queue_selector)

Отбрасывает некоторые данные в файловом дескрипторе fd в зависимости от величины queue_selector.

TCIFLUSH Сбрасывает на диск все полученные, но еще не прочитанные интерфейсом данные.
TCOFLUSH Сбрасывает на диск все данные, записанные в интерфейс, но еще не отправленные.
TCIOFLUSH Сбрасывает на диск все ожидающие входные и выходные данные.

int tcflow(int fd, int action)

Приостановить или возобновить вывод или ввод в файловом дескрипторе fd. Более точные действия определяются action.

TCOOFF Приостановить вывод.
TCOON Восстановить вывод.
TCIOFF Передать символ STOP, запрашивающий прекращение передачи символов вторым концом соединения.
TCION Передать символ START, запрашивающий восстановление передачи символов вторым концом соединения.

Обратите внимание, что TCIOFF и TCION необязательны, и даже если второй конец соединения принимает их на обработку, перед этим может возникнуть задержка.

16.5.2. Размеры окна

Существуют два запроса ioctl(), которые, к сожалению, не были закодированы как часть интерфейса termios, хотя и должны были. Размер tty, измеряемый строками и столбцами, должен управляться tcgetwinsize() и tcsetwinsize(), но, поскольку они не существуют, вместо этого следует использовать ioctl(). Для запроса текущего размера и установки нового размера применяйте структуру struct winsize.

#include <termios.h>

struct winsize {

 unsigned short ws_row;    /* количество строк */

 unsigned short ws_col;    /* количество столбцов */

 unsigned short ws_xpixel; /* не используется */

 unsigned short ws_ypixel; /* не используется */

};

Для запроса текущего размера используйте следующий вызов:

struct winsize ws;

ioctl(fd, TIOCGWINSZ, &ws);

Для установки нового размера заполните struct winsize и предусмотрите такой вызов:

ioctl(fd, TIOCSWINSZ, &ws);

В конце этой главы представлен пример условий, при которых возникает потребность в установке нового размера окна.

При изменении размеров окна лидеру группы процессов переднего плана на данном tty передается сигнал SIGWINCH. Ваш код может перехватить этот сигнал; используйте TIOCGWINSZ для запроса нового размера и внесите в свою программу все необходимые изменения.

16.5.3. Флаги

Четыре флаговых переменных — c_iflag, с_oflag, c_cflag и c_lflag — хранят флаги, управляющие определенными характеристиками. Заголовочный файл <termios.h> предоставляет символические константы битовых масок, которые, в свою очередь, предоставляют эти флаги. Устанавливайте их с помощью |= и переустанавливайте с помощью &= и как показано ниже.

t.c_iflag |= BRKINT;

t.c_iflag &= ~IGNBRK;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату