ОБЗОР
#include <sys/ioctl.h>
int ioctl(int fd, unsigned long request, ...);
ОПИСАНИЕ
Функция ioctl() изменяет базовые параметры устройства, представленного в
виде специального файла. В частности, через запросы ioctl() можно
управлять многими оперативными характеристиками специальных символьных
файлов (например, терминалов). В качестве аргумента fd должен быть указан
открытый файловый дескриптор.
Второй аргумент является кодом запроса, значение которого зависит от устройства. Третий аргумент является нетипизированным указателем на память. Обычно, это char *argp (было до тех пор, пока в C не появился vvoid *) и далее он будет называться именно так.
В значении request функции ioctl() кодируется информация является ли параметр входным или выходным и размер аргумента argp в байтах. Макросы и определения, используемые при указании в ioctl() запросах request, определены в файле <sys/ioctl.h>.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Обычно, при успешном завершении возвращается ноль. В некоторых ioctl()
запросах возвращаемое значение считается выходным параметром и при успешном
завершении возвращается неотрицательное значение. В случае ошибки
возвращается -1 и значение errno устанавливается соответствующим образом.
ОШИБКИ
EBADF Значение fd не является правильным файловым дескриптором.
EFAULT argp ссылается на недоступную область памяти.
EINVAL Неправильное значение request или argp.
ENOTTY Значение fd не связано со специальным символьным устройством.
ENOTTY Указанный запрос не применяется к типу объекта, на который ссылается файловый дескриптор fd.