Linuxコマンドについて学ぶ - ioctl

ioctl - 制御デバイス

シノプシス

#include

int ioctl(int d 、int request 、...);

説明

ioctl関数は、特殊ファイルの基礎となるデバイスパラメータを操作します。 特に、文字特殊ファイル(端末など)の多くの動作特性は、 ioctl要求で制御できます。 引き数dはオープンファイル記述子でなければなりません。

2番目の引数は、デバイス依存の要求コードです。 3番目の引数は、型が指定されていないメモリへのポインタです。 これは伝統的にchar * argpvoid *が有効なCの前日から)であり、この議論のためにその名前が付けられます。

ioctl 要求では、引数がinパラメータであるかoutパラメータであるか、引数argpのサイズはバイトであるかにかかわらず、その中にエンコードされています。 ioctl 要求の指定に使用されるマクロと定義は、 ファイルにあります。

戻り値

通常、成功するとゼロが返されます。 いくつかのioctlは出力パラメータとして戻り値を使用し、成功すると非負の値を返します。 エラーの場合、-1が返され、 errnoが適切に設定されます。

エラー

EBADF

dは有効な記述子ではありません。

EFAULT

argpは 、アクセスできないメモリ領域を参照します。

エノテ

dは文字特殊装置に関連付けられていません。

エノテ

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

EINVAL

要求またはargpが無効です。

従う

単一の基準はありません。 ioctl (2)の引数、戻り値、およびセマンティクスは、問題のデバイスドライバによって異なります(この呼び出しは、 UnixストリームI / Oモデルに完全に適合しない操作のキャッチオールとして使用されます)。 既知の多くのioctl呼び出しのリストについては、 ioctl_list (2)を参照してください。 ioctl関数呼び出しはバージョン7のAT&T Unixで登場しました。