ioctl(2) FreeBSD 一般コマンドマニュアル

ioctl

前のページ 上に戻る 次のページ

ioctl




書式

     #include <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> の中にあります。


実装に関する注

     非スレッドライブラリ ioctl() は、 ioctl システムコールとして実装されてい
     ます。

     スレッドライブラリの場合、 ioctl システムコールは _thread_sys_ioctl() に
     アセンブルされ、 ioctl() は、読み書きについて d をロックしてから
     _thread_sys_ioctl() 呼び出す関数として実装されています。戻る前に ioctl()
     は d をアンロックします。


戻り値

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


エラー

     ioctl() は次の場合に失敗します。

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

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

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

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

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


関連項目

     execve(2), fcntl(2), intro(4), tty(4)

ABELNET VPSサービス