Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all
名前
ioctl - デバイスを制御する
書式
#include <sys/ioctl.h> int ioctl(int d, int request, ...);
説明
ioctl() 関数はスペシャルファイルを構成するデバイスのパラメータを 操作する。特に、キャラク タ型のスペシャルファイル (例えば端末 (terminal)) の多くの動作特性を ioctl() リクエストに よって制御することができる。引き数 d はオープンされたファイルディスクリプタでなければなら ない。 2 番目の引き数は、デバイス依存のリクエストコードである。 3 番目の引き数は、メモリへの型を 指定しないポインタである。 この引き数は伝統的に (C で void * という書き方が有効になる前か ら) char *argp と表記されている。したがって、この文章でもそう名付けることとする。 ioctl() の request には、 その引き数が 入力 パラメータと 出力 パラメータのどちらであるか の区別や、 argp 引き数のバイト単位のサイズ、といった情報がエンコードされている。 ioctl() の request を指定するためのマクロ (macro) と定義は <sys/ioctl.h> ファイルにある。
返り値
たいていの場合、成功するとゼロが返される。 ただし、 ioctl() リクエストの中にはパラメータ の出力に返り値を使用しているものが若干あり、 その場合は、成功したときに非負の値が返され る。 エラーの場合は -1 が返され、 errno が適切に設定される。
エラー
EBADF d が有効なディスクリプタではない。 EFAULT argp がアクセス不可能なメモリを参照している。 EINVAL request または argp が不正である。 ENOTTY d がキャラクタ型のスペシャルデバイスを参照していない。 ENOTTY 指定されたリクエストはディスクリプタ d が参照する種類のオブジェクトには適用すること ができない。
準拠
どれか一つの標準に対応しているわけではない。 ioctl() の引き数、返り値、解釈は、処理対象の デバイスドライバごとに 異なる (この関数は UNIX の ストリーム I/O モデル に きちんと適合し ていない操作のための便利屋として使用される)。 よく知られている ioctl() のリストについては ioctl_list(2) を参照すること。 ioctl() 関数コールは Version 7 AT&T UNIX で登場した。
注意
このシステムコールを使うには、オープンされたファイルディスクリプタが 必要である。 open(2) コールはしばしば望んでいない副作用を伴うことがあるが、Linux では open(2) に O_NONBLOCK フ ラグをつけることでこの副作用を避けることができる。
関連項目
execve(2), fcntl(2), ioctl_list(2), open(2), sd(4), tty(4)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。