TTYNAME(3)

ИМЯ
ttyname, ttyname_r - возвращает имя терминала

ОБЗОР
#include <unistd.h>

char *ttyname(int fd);

int ttyname_r(int fd, char *buf, size_t buflen);

ОПИСАНИЕ
Функция ttyname() возвращает указатель на завершаемый нулевым символом путь устройства терминала, на котором был открыт файловый дескриптор fd, или NULL в случае ошибки (например, если fd не подключен к терминалу). Возвращаемое значение может указывать на статические данные, которые могут быть перезаписаны при следующем вызове. Функция ttyname_r() сохраняет имя пути в буфере buf длиной buflen.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении функция ttyname() возвращает указатель на имя пути. В случае ошибки возвращается NULL, в errno устанавливается код ошибки. При успешном выполнении функция ttyname_r() возвращает 0, а в случае ошибки — номер ошибки.

ОШИБКИ

EBADF
    Неправильный дескриптор файла.

ENODEV
    Файловые дескрипторы ссылаются на устройство подчинённого псевдотерминала, но соответствующий путь невозможно найти (смотрите ЗАМЕЧАНИЯ).

ENOTTY
    Файловый дескриптор указывает не на устройство терминала.

ERANGE
    (ttyname_r()) Значение buflen мало для хранения имени пути.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
ttyname() | Безвредность в нитях | MT-Unsafe race:ttyname
ttyname_r() | Безвредность в нитях | MT-Safe

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, 4.2BSD.

ЗАМЕЧАНИЯ
Процесс, сохранивший файловый дескриптор, указывающий на устройство pts(4), открытым при переключении в другое пространство имён монтирования, в котором используется другой экземпляр /dev/ptmx, может неожиданно обнаружить, что существует путь устройства с тем же именем как у этого файлового дескриптора. Однако данный путь указывает на другое устройство и поэтому не может использоваться для доступа к устройству, на который указывает файловый дескриптор. Вызов ttyname() или ttyname_r() с файловым дескриптором в новом пространстве имён монтирования приведёт к тому, что эти функции вернут NULL и присвоят errno значение ENODEV.

СМОТРИТЕ ТАКЖЕ
tty(1), fstat(2), ctermid(3), isatty(3), pts(4)