ИМЯ¶
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