Linux repositories inspector
Linux
2017-05-03

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

ioctl - управляет устройством

ОБЗОР

#include <sys/ioctl.h>
int ioctl(int fd, unsigned long request, ...);

ОПИСАНИЕ

Системный вызов ioctl() изменяет параметры нижележащего устройства специальных файлов. В частности, через запросы ioctl() можно управлять многими оперативными характеристиками специальных символьных файлов (например, терминалов). В качестве аргумента fd должен быть указан открытый файловый дескриптор.
Второй аргумент является кодом запроса, значение которого зависит от устройства. Третий аргумент является нетипизированным указателем на память. Обычно, это char *argp (было до тех пор, пока в C не появился vvoid *) и далее он будет называться именно так.
В значении request функции ioctl() кодируется информация является ли параметр входным или выходным и размер аргумента argp в байтах. Макросы и определения, используемые при указании в ioctl() запросах request, определены в файле <sys/ioctl.h>.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Обычно, при успешном завершении возвращается ноль. В некоторых ioctl() запросах возвращаемое значение считается выходным параметром и при успешном завершении возвращается неотрицательное значение. В случае ошибки возвращается -1 и значение errno устанавливается соответствующим образом.

ОШИБКИ

EBADF Значение fd не является правильным файловым дескриптором.
EFAULT argp ссылается на недоступную область памяти.
EINVAL Неправильное значение request или argp.
ENOTTY Значение fd не связано со специальным символьным устройством.
ENOTTY Указанный запрос не применяется к типу объекта, на который ссылается файловый дескриптор fd.

СООТВЕТСТВИЕ СТАНДАРТАМ

Нет единого стандарта. Аргументы, возвращаемые значения и семантика ioctl() варьируются в соответствии с драйвером устройства (вызов, используемый как всеохватывающий, не полностью соответствует потоковой модели ввода/вывода в UNIX). В ioctl_list(2) можно найти список многих известных вызовов ioctl(). Системный вызов ioctl() появился в AT&T UNIX версии 7.

ЗАМЕЧАНИЯ

Чтобы использовать этот вызов требуется открытый файловый дескриптор. Часто вызов open(2) приводит к нежелательным эффектам, которых в Linux можно избежать указав флаг O_NONBLOCK.

REFERENCED BY

sane-pint(5), man(1), apropos(1), whatis(1), getsockopt(2), ioctl_console(2), ioctl_fat(2), ioctl_ficlonerange(2), ioctl_fideduperange(2), ioctl_getfsmap(2), ioctl_iflags(2), ioctl_list(2), ioctl_ns(2), ioctl_tty(2), ioctl_userfaultfd(2), open(2), perf_event_open(2), read(2), select_tut(2), socket(2), timerfd_create(2), userfaultfd(2), write(2), errno(3), getifaddrs(3), if_nameindex(3), if_nametoindex(3), openpty(3), sockatmark(3), tcgetsid(3), console_ioctl(4), dsp56k(4), loop(4), lp(4), random(4), rtc(4), sd(4), st(4), tty(4), tty_ioctl(4), vcs(4), arp(7), capabilities(7), inotify(7), pid_namespaces(7), pipe(7), pty(7), signal(7), socket(7), tcp(7), termio(7), udp(7), unix(7), user_namespaces(7), ntfsclone(8), rmt(8), rmt-tar(8), rmt-dump(8), fd(4), hwstamp_ctl(8), ioctl(2), mount(8), mgettydefs(4), ploop(8), procenv(1), bnchat(1), tk_scsiformat(8), scsiformat(8), scsiinfo(8), setcd(1), swipl(1), msocket(2viewos), apple2(6), phosphor(6), apple2(6x), phosphor(6x), , fdisk(8), rmt(1), rscsi(1), anyfs-tools(8), build_it(8), smartpqi(4), ioctl_xfs_scrub_metadata(2), beep(1), ermt(1), gnurmt(1), srmt(1), namespaces(7), apropos-db(1), man-db(1), whatis-db(1), pcap_set_immediate_mode(3pcap), ioctl_xfs_fsbulkstat(2), ioctl_xfs_fscounts(2), ioctl_xfs_fsgetxattr(2), ioctl_xfs_fsinumbers(2), ioctl_xfs_fsop_geometry(2), ioctl_xfs_getbmapx(2), ioctl_xfs_getresblks(2), ioctl_xfs_goingdown(2), ioctl_xfs_ag_geometry(2), ioctl_xfs_bulkstat(2), ioctl_xfs_inumbers(2), apropos.man-db(1), man.man-db(1), whatis.man-db(1)
⇧ Top