ОБЗОР
#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.