IOCTL(2)

名称
ioctl - デバイスを制御する

ライブラリ
libc

書式
<sys/ioctl.h> int ioctl(int d, unsigned long request, ...)

解説
ioctl() システムコールは特殊ファイルの下層となっているデバイスのパラメータを 操作します。 特に、キャラクタ型特殊ファイル (たとえば、端末) の多数の操作属性は ioctl() で制御できます。 引数 d は開いているファイル記述子である必要があります。

ioctl() への 3 番めの引数は従来から char *argp と名前付けられています。 しかし、 FreeBSD 3.0 での ioctl() のほとんどの使用法では、3 番めの引数が caddr_t または int である必要があります。

ioctl() の request は、引数が “in” 引数なのか “out” 引数なのかということと、引数 argp のサイズ (バイト単位) をエンコードします。 ioctl の request を指定するのに使用されるマクロと定義はファイル <sys/ioctl.h> の中にあります。

戻り値
エラーが起きた場合は -1 が返され、エラーを示すために errno が設定されます。

エラー
ioctl() システムコールは次の場合に失敗します:

[EBADF]
    d 引数が有効な記述子ではありません。

[ENOTTY]
    d 引数がキャラクタ型特殊デバイスに対応していません。

[ENOTTY]
    指定された要求は記述子 d が参照する種類のオブジェクトには適用されません。

[EINVAL]
    request または argp 引数が有効ではありません。

[EFAULT]
    argp 引数がプロセッサが割り当てたアドレス範囲外を指しています。

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

歴史
ioctl() 関数は AT&T UNIX ではじめて登場しました。