Scroll to navigation

ioctl(2) 2007-10-27-16:31 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 присвоюється код помилки.

КОДИ ПОМИЛОК


d не є чинним дескриптором.

argp посилається на недоступну область адресного простору.

d не відповідає символьному пристроєві.

Вказаний запит не застосовується до типу об'єкта, на який посилається дескриптор d.

Невірно вказані 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)

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

2007-10-27-16:31 © 2005-2007 DLOU, GNU FDL