IOCTL
Section: Linux Programmer's Manual (2)
Updated: 2014-12-31
Index
JM Home Page
roff page
名前
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/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 16:46:41 GMT, November 24, 2023