ИМЯ
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 [AT] perm.ru> 2003