IOCTL(2)                                               IOCTL(2)
НАЗВАНИЕ
ioctl - управление устройствами
СИНТАКСИС
       |ioctl (fildes, command, arg)
       |int fildes, command;
ОПИСАНИЕ
Системный  вызов  ioctl выполняет различные управляющие
        действия над устройствами и потоками. В  первом  случае
        действия, которые выполняет этот системный вызов, зави-
        сят от устройства. Аргументы command и arg передаются в
        файл,  ассоциированный с дескриптором fildes, и интерп-
        ретируются драйвером устройства. Подобный способ управ-
        ления для обычных устройств используется редко;  основ-
        ные операции ввода/вывода выполняются с помощью систем-
        ных вызовов read(2) и write(2).
        Действия над потоками, выполняемые с помощью системного
        вызова ioctl, описаны в streamio(7).
        Аргумент fildes - это открытый дескриптор файла, являю-
        щегося устройством. Аргумент command задает выполняемые
        действия и зависит от устройства, с которым ведется ра-
        бота. Наконец, arg  задает  дополнительную  информацию,
        которая  может  потребоваться  для выполнения указанных
        действий. Тип аргумента arg зависит от конкретного  уп-
        равляющего  действия и является либо целым, либо указа-
        телем на специфичную для устройства структуру.
                            
        Отметим, что существуют некоторые общие действия, кото-
        рые выполняются драйверами различных устройств,  напри-
        мер общий интерфейс с терминалом [см. termio(7)].      
                                                               
        Системный вызов ioctl завершается неудачей  для  файлов
        любого  типа,  если выполнено хотя бы одно из следующих
        условий:                                               
                                                               
        [EBADF]     Аргумент  fildes  не  является   корректным
                    дескриптором открытого файла.              
                                       
        [ENOTTY]    Аргумент  fildes  не  связан с устройством,
                    драйвер которого  отрабатывает  управляющие
                    функции.                
        [EINTR]     Во  время  выполнения системного вызова пе
                    рехвачен сигнал.                           
                                                               
        Системный вызов ioctl также завершается неудачей,  если
        драйвер  устройства  обнаружит  ошибку.  В  этом случае
        ошибка возвращается системным  вызовом  без  изменений.
        Конкретный  драйвер может вырабатывать не все ошибки из
        перечисленных ниже:                           
        [EFAULT]    Действие  command  требует обмена данными с
                    буфером, указанным с помощью аргумента arg,
                    но сам буфер или  его  часть  находятся  за
                    пределами  отведенного  процессу  адресного
                    пространства.                              
                                                               
        [EINVAL]    Значения аргументов command или arg  некор-
                    ректны для данного устройства.
                                                               
        [EIO]       Обнаружена ошибка ввода/вывода.
        [ENXIO]     Значения  аргументов  command  или arg кор-
                    ректны для данного драйвера, но над  данным
                    устройством  указанный запрос не может быть
                    выполнен.
                                                               
        [ENOLINK]   Аргумент fildes является дескриптором файла
                    на  удаленном компьютере, связи с которым в
                    данный момент нет.                         
                                                               
        Ошибки ПОТОКОВ описаны в streamio(7).                  
                                                               
СМ. ТАКЖЕ                  
        streamio(7), termio(7) в Справочнике администратора.
                                                               
ДИАГНОСТИКА                                                    
        При успешном завершении результат зависит от  управляю-
        щего  действия,  но  должен  быть неотрицательным целым
        числом. В случае ошибки возвращается -1,  а  переменной
        errno присваивается код ошибки.