tcsetattr()

Изменить настройки управления терминалом для устройства

Прототип:

#include <termios.h>
int tcsetattr( int fildes,
int optional_actions,
const struct termios *termios_p );

Аргументы:

fildes
Файловый дескриптор, связанный с терминальным устройством.
termios_p
Указатель на структуру struct termios, описывающую атрибуты, которые необходимо установить для этого терминала.

Библиотека:

libc

Описание:

Функция tcsetattr() устанавливает текущие настройки управления терминалом для открытого устройства, связанного с fildes, в значения, хранящиеся в структуре, на которую указывает termios_p.

Действие tcsetattr() зависит от значений в optional_actions:

TCSANOW
Изменение применяется немедленно.
TCSADRAIN
Изменения не применяются до тех пор, пока не будет передана вся записанная информация.
TCSAFLUSH
Изменения не применяются до тех пор, пока вся записанная информация не будет передана, в этот момент любая полученная, но непрочитанная информация также отклоняется.

Структура struct termios определена в <termios.h>. Для дополнительной информации, см. tcgetattr().

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Некорректный аргумент fildes.
EINVAL
Некорректный аргумент action или один из членов termios_p некорректный.
ENOSYS
Менеджер ресурсов, связанный с fildes, не поддерживает этот вызов.
ENOTTY
Аргумент fildes не относится к терминальному устройству.

Примеры:

#include <stdlib.h>
#include <termios.h>
int raw( int fd )
{
struct termios termios_p;
if ( tcgetattr( fd, &termios_p ) )
return (-1);
termios_p.c_cc[VMIN] = 1;
termios_p.c_cc[VTIME] = 0;
termios_p.c_lflag &= ~(ECHO | ICANON | ISIG|
ECHOE | ECHOK | ECHONL);
termios_p.c_oflag &= ~(OPOST);
return (tcsetattr( fd, TCSADRAIN, &termios_p ));
}
int unraw( int fd )
{
struct termios termios_p;
if ( tcgetattr( fd, &termios_p ) )
return (-1);
termios_p.c_lflag |= (ECHO | ICANON | ISIG |
ECHOE | ECHOK | ECHONL);
termios_p.c_oflag |= (OPOST);
return (tcsetattr( fd, TCSADRAIN, &termios_p ));
}
int main( void )
{
raw( 0 );
/* Stdin is now "raw" */
unraw( 0 );
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

errno, ioctl(), select(), tcgetattr(), struct termios




Предыдущий раздел: Описание API системной библиотеки