Функция
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.