Man:Man2/ioctl.2

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

(Перенаправлено з Man/man2/ioctl.2)
Перейти до: навігація, пошук


Зміст

НАЗВА

іoctl - керує пристроями

СИНТАКСИС

#include <sys/ioctl.h>

int ioctl(int d, int request, ...);

/* третім аргументом, як правило є char *argp */

ОПИС

Функція іoctl керує пристроями , на які посилаються спеціальні файли. За допомогою запитів іoctl можна керувати багатьма символьними пристроями (character devices) (наприклад, терміналами). Аргумент d повинен бути відкритим дескриптором файлу (пристрою).

Другий аргумент, request, є залежним від пристрою, кодом запиту. Третім аргументом є покажчик на пам'ять, що не має типу. Це традиційно char *argp (ще з тих часів, коли void * було чинним C), і ми так і будемо використовувати його у цій дискусії.

Параметр request має вбудовану в собі інформацію, чи являється третій аргумент вхідним чи вихідним і, додатково, розмір argp у байтах. Макроси і визначення define, що використовуються для виклику запитів request функції іoctl, знаходяться у файлі <sys/ioctl.h>.

ПОВЕРНЕНЕ ЗНАЧЕННЯ

Звичайно, при успішному завершенні повертається нульове значення. Деякі іoctl використовують повернене значення як параметр виводу і при успішному завершенні повертають позитивне значення. При помилці повернене значення дорівнює -1, і errno присвоюється код помилки.

КОДИ ПОМИЛОК

EBADF
d не є чинним дескриптором.
EFAULT
argp посилається на недоступну область адресного простору.
ENOTTY
d не відповідає символьному пристроєві.
ENOTTY
Вказаний запит не застосовується до типу об'єкта, на який посилається дескриптор d.
EІNVAL
Невірно вказані request або argp.

ВІДПОВІДНІСТЬ СТАНДАРТАМ

Не існує єдиного стандарту. Аргументи, повернені значення і семантика ioctl(2) різні у кожному конкретному випадку, в залежності від драйвера пристрою (виклик є загальним для всіх операцій, що не вписуються у модель потокового вводу/виводу Unix). Передивіться ioctl_list(2), у якому перелічені більшість викликів іoctl. Виклик іoctl уперше з'явився у версії 7 AT&T Unix.

ДИВІТЬСЯ ТАКОЖ

execve(2), fcntl(2), ioctl_list(2), mt(4), sd(4), tty(4)



Переклав українською Віталій Цибуляк.

Особисті інструменти