ioctl

Autres langues

Langue: ru

Version: 2000-09-21 (fedora - 25/11/07)

Section: 2 (Appels système)

ИМЯ

ioctl - управление устройствами

ОБЗОР

#include <sys/ioctl.h>

int ioctl(int d, int request, ...);

ОПИСАНИЕ

Функция ioctl манипулирует базовыми параметрами устройств, представленных в виде специальных файлов. В частности, многими оперативными характеристиками специальных символьных файлов (например терминалов) можно управлять через ioctl запросы. В качестве аргумента d должен быть указан открытый файловый дескриптор.

Второй аргумент является кодом запроса, который зависит от устройства. Третий аргумент является указателем на память, который не имеет типа. Традиционно это char *argp (до тех пор пока в C не появился void * ).

Ioctl запрос request кодирует в себе либо аргумент, который является параметром in либо аргумент, который является параметром out и кроме того размер аргумента argp в байтах. Макросы и определения, используемые в специальных ioctl запросах request находятся в файле <sys/ioctl.h>.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Обычно в случае успеха возвращается ноль. Некоторые ioctl используют возвращаемое значение как выходной параметр и возвращают в случае успеха неотрицательное значение. В случае ошибки возвращается -1 и значение errno устанавливается соответствующим образом.

ОШИБКИ

EBADF
d не является правильным дескриптором.
EFAULT
argp ссылается на недоступную область памяти.
ENOTTY
d не ассоциирован со специальным символьным устройством.
ENOTTY
Указанный запрос не применим к данному классу объекта, на который ссылается дескриптор d .
EINVAL
Request или argp заданы неверно.

СООТВЕТСТВИЕ СТАНДАРТАМ

Нет единого стандарта. Аргументы, возвращаемые значения и семантики ioctl(2) варьируются в соответствии с драйвером устройства (вызов, используется как всеохватывающий, что не полностью соответствует потоковой модели ввода/вывода в Unix). Смотри ioctl_list(2) где дан список многих известных ioctl вызовов. Функция ioctl появилась в AT&T Unix версии 7.

СМОТРИ ТАКЖЕ

execve(2), fcntl(2), ioctl_list(2), mt(4), sd(4), tty(4)

ПЕРЕВОД

Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003