Manpages

名 前

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/ に 書 か れ て い る 。