Linux repositories inspector
Linux
2014-12-31

manpages-ja-dev

Japanese version of the manual pages (for developers)

man-pages-ja

Japanese man (manual) pages from the Japanese Manual 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() 関数はスペシャルファイルを構成するデバイスのパラメーターを 操作する。特に、キャラクター型のスペシャルファイル (例えば端末 (terminal)) の多くの動作特性を ioctl() リクエストによって制御することができる。引き数 fd はオープンされたファイルディスクリプターでなければならない。
2 番目の引き数は、デバイス依存のリクエストコードである。 3 番目の引き数は、メモリーへの型を指定しないポインターである。 この引き数は伝統的に (C で void * という書き方が有効になる前から) char *argp と表記されている。したがって、この文章でもそう名付けることとする。
ioctl() の request には、 その引き数が 入力 パラメーターと 出力 パラメーターのどちらであるかの区別や、 argp 引き数のバイト単位のサイズ、といった情報がエンコードされている。 ioctl() の request を指定するためのマクロ (macro) と定義は <sys/ioctl.h> ファイルにある。

返り値

たいていの場合、成功するとゼロが返される。 ただし、 ioctl() リクエストの中にはパラメーターの出力に返り値を使用しているものが若干あり、 その場合は、成功したときに非負の値が返される。 エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

EBADF fd が無効なディスクリプターである。
EFAULT argp がアクセス不可能なメモリーを参照している。
EINVAL request または argp が不正である。
ENOTTY fd がキャラクター型のスペシャルデバイスを参照していない。
ENOTTY 指定されたリクエストはディスクリプター fd が参照する種類のオブジェクトには適用することができない。

準拠

どれか一つの標準に対応しているわけではない。 ioctl() の引き数、返り値、解釈は、処理対象のデバイスドライバごとに 異なる (この関数は UNIX の ストリーム I/O モデル に きちんと適合していない操作のための便利屋として使用される)。 よく知られている ioctl() のリストについては ioctl_list(2) を参照すること。 ioctl() 関数コールは Version 7 AT&T UNIX で登場した。

注意

このシステムコールを使うには、オープンされたファイルディスクリプターが 必要である。 open(2) コールはしばしば望んでいない副作用を伴うことがあるが、Linux では open(2)O_NONBLOCK フラグをつけることでこの副作用を避けることができる。

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

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