IOCTL(2)

名前
ioctl - デバイス(device)を制御する

書式
#include <sys/ioctl.h>

int ioctl(int d, int request, ...)

[三番目の引き数は伝統的に char *argp とされる、それでこの文章 でもそのように名付けている。]

説明
ioctl 関数はスペシャル・ファイルを構成するデバイスのパラメーターを 操作する。特に、キャラクター・スペシャル・ファイル(例えば端末(terminal)) の操作可能な特性を ioctl リクエストによって制御することができる。引き数 d はオープンされたファイル・ディスクリプターでなければならない。 ioctl request には引き数が 入力 パラメーターか 出力 パラメーターのどちらかと、 argp の大きさをバイト数でエンコードする。 特定の ioctl request を使用するためのマクロ(macro)と定義は <sys/ioctl.h> ファイルにある。

返り値
成功した場合はゼロが返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

EBADF
    d が有効なディスクリプターでない。

ENOTTY
    d がキャラクター・スペシャル・デバイスを参照していない。

ENOTTY
    指定されたリクエストはディスクリプター d が参照する種類のオブジェクトには適用することができない。

EINVAL
    request または argp が不正である。

準拠
どれか一つの標準に対応しているわけではない。 ioctl(2) の引き数、帰り値、解釈は問題になっているデバイス・ドライバーごとに 異なっている。(そのコールは明らかに Unix の ストリーム I/O モデル に似わない操作のために使用されている。) よく知られている ioctl のリストについては ioctl_list(2) を参照せよ。 ioctl 関数コールは Version 7 AT&T Unix で現われた。

関連項目
execve(2), fcntl(2), mt(4), sd(4), tty(4)