ioctl − デ バ イ ス (device) を 制 御 す る
#include <sys/ioctl.h>
int ioctl(int d, int request, ...);
ioctl() 関 数 は ス ペ シ ャ ル ・ フ ァ イ ル を 構 成 す る デ バ イ ス の パ ラ メ ー タ を 操 作 す る 。 特 に 、 キ ャ ラ ク タ 型 の ス ペ シ ャ ル ・ フ ァ イ ル (例 え ば 端 末 (terminal)) の 多 く の 操 作 可 能 な 特 性 を ioctl() リ ク エ ス ト に よ っ て 制 御 す る こ と が で き る 。 引 き 数 d は オ ー プ ン さ れ た フ ァ イ ル ・ デ ィ ス ク リ プ タ で な け れ ば な ら な い 。
2番 目 の 引 き 数 は 、 デ バ イ ス 依 存 の リ ク エ ス ト ・ コ ー ド で あ る 。 3番 目 の 引 き 数 は 、 メ モ リ へ の 型 を 指 定 し な い ポ イ ン タ で あ る 。 こ の 引 き 数 は 伝 統 的 に (C で void * が 有 効 に な る 前 か ら ) char *argp と 表 記 さ れ て い る 。 し た が っ て 、 こ の 文 章 で も そ の よ う に 名 付 け る こ と と す る 。
ioctl() request に は 、 以 下 の 情 報 を バ イ ト 数 で エ ン コ ー ド す る : (1)引 き 数 が 入 力 パ ラ メ ー タ か 出 力 パ ラ メ ー タ の ど ち ら か で あ る か 、 (2) argp の 大 き さ 。 ioctl() request を 指 定 す る た め の マ ク ロ (macro)と 定 義 は <sys/ioctl.h> フ ァ イ ル に あ る 。
ioctl() requests use the return value as an output parameter た い て い の 場 合 、 成 功 し た 場 合 は ゼ ロ が 返 さ れ る 。 い く つ か の ioctl() 要 求 で は 出 力 パ ラ メ ー タ と し て 返 り 値 を 使 用 し て い た り 、 成 功 し た 場 合 に 非 0 の 値 を 返 し た り す る 。 エ ラ ー の 場 合 は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。
|
EBADF |
d が 有 効 な デ ィ ス ク リ プ タ で は な い 。 | ||
|
EFAULT |
argp が ア ク セ ス 不 可 能 な メ モ リ を 参 照 し て い る 。 | ||
|
EINVAL |
request ま た は argp が 不 正 で あ る 。 | ||
|
ENOTTY |
d が キ ャ ラ ク タ 型 の ス ペ シ ャ ル ・ デ バ イ ス を 参 照 し て い な い 。 指 定 さ れ た リ ク エ ス ト は デ ィ ス ク リ プ タ d が 参 照 す る 種 類 の オ ブ ジ ェ ク ト に は 適 用 す る こ と が で き な い 。 準 拠ど れ か 一 つ の 標 準 に 対 応 し て い る わ け で は な い 。 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) COMMENTS |