Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all bug

名前

       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 フラグをつけることでこの副作用を避けることができる。

関連項目

       execve(2), fcntl(2), ioctl_list(2), open(2), sd(4), tty(4)

この文書について

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