名 前
errno − 直 近 に 発 生 し た エ ラ ー の 番 号
書 式
#include <errno.h>
説 明
ヘ ッ ダ ー フ ァ イ ル <errno.h> で 整 数 型 の 変 数 errno が 定 義 さ れ て お り 、 シ ス テ ム コ ー ル や い く つ か の ラ イ ブ ラ リ 関 数 は 、 エ ラ ー が 発 生 し た 際 に こ の 変 数 に そ の 原 因 を 示 す 値 を 設 定 す る 。 こ の 値 は 呼 び 出 し の 返 り 値 が エ ラ ー (ほ と ん ど の シ ス テ ム コ ー ル で は −1 で 、 ほ と ん ど の ラ イ ブ ラ リ 関 数 で は −1 か NULL) を 示 し た と き に の み 意 味 を 持 つ が 、 ラ イ ブ ラ リ 関 数 は 成 功 し た 場 合 も errno を 変 更 す る こ と が 許 さ れ て い る 。 有 効 な エ ラ ー 番 号 は い ず れ も 0 以 外 の 値 を 持 つ 。 ど の シ ス テ ム コ ー ル も ラ イ ブ ラ リ 関 数 も errno を 0 に 設 定 す る こ と は な い 。 い く つ か の シ ス テ ム コ ー ル や ラ イ ブ ラ リ 関 数 (例 え ば getpriority(2)) で は 、 成 功 し た 場 合 の 有 効 な 返 り 値 と し て −1 が 返 さ れ る こ と が あ る 。 こ の よ う な 場 合 、 成 功 な の か エ ラ ー な の か を 区 別 す る た め に は 、 呼 び 出 し の 前 に errno を 0 に 設 定 し て お け ば よ い 。 呼 び 出 し の 返 り 値 が エ ラ ー 発 生 の 可 能 性 を 示 す も の だ っ た 場 合 に は 、 errno が 0 以 外 の 値 か を 見 て 確 認 す れ ば よ い 。
errno は 、 ISO C standard で int 型 の 変 更 可 能 な 左 辺 値 と し て 定 義 さ れ て お り 、 明 示 的 に 宣 言 を 行 っ て は な ら な い ; errno は マ ク ロ の 場 合 も あ り え る 。 errno は ス レ ッ ド 毎 に 値 を 持 つ 。 つ ま り あ る ス レ ッ ド で errno が 設 定 さ れ て も 、 他 の ス レ ッ ド の errno に は 影 響 し な い 。
POSIX.1 で 定 義 さ れ て い る す べ て の エ ラ ー 名 に は 、 そ れ ぞ れ 異 な る 値 が 対 応 し て い な け れ ば な ら な い 。 但 し 、 EAGAIN と EWOULDBLOCK は 例 外 で 、 こ れ ら は 同 じ 値 を 持 っ て も よ い 。
Below is a list of the symbolic error names that are defined on Linux. Some of these are marked POSIX.1, indicating that the name is defined by POSIX.1−2001, or C99, indicating that the name is defined by C99.
E2BIG 引 き 数 リ ス ト が 長 過 ぎ る
(POSIX.1)
EACCES 許 可 が な い
(POSIX.1)
EADDRINUSE ア ド レ ス が す で に 使 用 さ れ て い る
(POSIX.1)
EADDRNOTAVAIL ア ド レ ス が 使 用 で き な い
(POSIX.1)
EAFNOSUPPORT ア ド レ ス フ ァ ミ リ ー が サ ポ ー ト さ れ て い な い
(POSIX.1)
EAGAIN リ ソ ー ス が 一 時 的 に 利 用 不 可
(EWOULDBLOCK と 同 じ 値 で も よ い ) (POSIX.1)
EALREADY 接 続 が 既 に 処 理 中 で あ る
(POSIX.1)
EBADE 不 正 な や り 取 り
(exchange) で あ る
EBADF フ ァ イ ル デ ィ ス ク リ プ タ ー が 不 正 で あ る
(POSIX.1)
EBADFD フ ァ イ ル デ ィ ス ク リ プ タ ー が 不 正 な 状 態 で
あ る
EBADMSG メ ッ セ ー ジ が 不 正 で あ る
(POSIX.1)
EBADR 不 正 な リ ク エ ス ト デ ィ ス ク
リ プ タ ー
EBADRQC 不 正 な リ ク エ ス ト コ ー ド
EBADSLT 不 正 な ス ロ ッ ト
EBUSY リ ソ ー ス が 使 用 中 で あ る
(POSIX.1)
ECANCELED 操 作 が キ ャ ン セ ル さ れ た
(POSIX.1)
ECHILD 子 プ ロ セ ス が 無 い
(POSIX.1)
ECHRNG チ ャ ン ネ ル 番 号 が 範 囲 外 で あ る
ECOMM 送 信 時 に 通 信 エ ラ ー が 発 生 し た
ECONNABORTED 接 続 が 中 止 さ れ た
(POSIX.1)
ECONNREFUSED 接 続 が 拒 否 さ れ た
(POSIX.1)
ECONNRESET 接 続 が リ セ ッ ト さ れ
た (POSIX.1)
EDEADLK リ ソ ー ス の デ ッ ド ロ ッ ク
を 回 避
し た (POSIX.1)
EDEADLOCK
EDEADLK の 同 義 語
EDESTADDRREQ
宛 先 ア ド レ ス が 必 要 で あ る (POSIX.1)
EDOM 数 学 関 数 で 引 き 数 が 領 域 外 で
あ る (out of
domain)
EDQUOT デ ィ ス ク ク
ォ ー タ (quota) を 超
過 し た (POSIX.1)
EEXIST フ ァ イ ル が
存 在 す る (POSIX.1)
EFAULT ア ド レ ス が 不 正 で あ
る (POSIX.1)
EFBIG フ ァ イ ル が
大 き 過 ぎ る (POSIX.1)
EHOSTDOWN ホ ス ト が ダ
ウ ン し て い る
EHOSTUNREACH ホ ス ト に
到 達 不 能 で あ
る (POSIX.1)
EIDRM 識 別 子 が 削
除 さ れ た
(POSIX.1)
EILSEQ 不 正 な バ イ ト 列
(POSIX.1, C99)
EINPROGRESS 操 作 が 実 行 中 で あ
る (POSIX.1)
EINTR 関 数 呼 び 出 し が 割 り 込
ま れ た
(POSIX.1); signal(7) 参 照 。
EINVAL 引 数 が 無 効
で あ る (POSIX.1)
EIO 入 出 力 エ ラ
ー
(POSIX.1)
EISCONN ソ ケ ッ ト が 接 続 さ れ て い る
(POSIX.1)
EISDIR デ ィ レ ク ト リ で あ る
(POSIX.1)
EISNAM 名 前 付 き の フ ァ イ ル で あ る
EKEYEXPIRED 鍵 が 期 限 切 れ と な っ た
EKEYREJECTED 鍵 が サ ー バ に よ り 拒 否 さ れ た
EKEYREVOKED 鍵 が 無 効 と な っ た
EL2HLT 停 止
(レ ベ ル 2)
EL2NSYNC 同 期 で き て い な い
(レ ベ ル 2)
EL3HLT 停 止
(レ ベ ル 3)
EL3RST 停 止
(レ ベ ル 3)
ELIBACC 必 要 な
共 有 ラ イ ブ ラ リ に ア ク セ ス で き な か っ た
ELIBBAD 壊 れ た 共 有 ラ イ ブ ラ リ に ア ク セ ス し よ う と し た
ELIBMAX リ ン ク し よ う と し た 共 有 ラ イ ブ ラ リ が 多 過 ぎ る
ELIBSCN
a.out の ラ イ ブ ラ リ セ ク シ ョ ン が 壊 れ て い る (corrupted)
ELIBEXEC 共 有 ラ イ ブ ラ リ を 直 接 実 行 で き な か っ た
ELOOP シ ン ボ リ ッ ク リ ン ク の 回 数 が 多 過 ぎ る
(POSIX.1)
EMEDIUMTYPE 間 違 っ た メ デ ィ ア 種 別 で あ る
EMFILE オ ー プ ン し て い る フ ァ イ ル が 多 過 ぎ る
(POSIX.1)。 通 常 は
getrlimit(2) に 説 明 が あ る リ ソ ー ス 上 限 RLIMIT_NOFILE を 超 過 し た 場 合 に 発 生 す る 。
EMLINK リ ン ク が 多 過 ぎ る
(POSIX.1)
EMSGSIZE メ ッ セ ー ジ が 長 過 ぎ
る (POSIX.1)
EMULTIHOP マ ル チ ホ ッ
プ (multihop) を 試 み た
(POSIX.1)
ENAMETOOLONG フ ァ イ ル 名 が 長
過 ぎ る (POSIX.1)
ENETDOWN ネ ッ ト ワ ー ク が 不 通 で あ
る (POSIX.1)
ENETRESET 接 続 が ネ ッ ト ワ ー ク 側 か ら 中
止 さ れ
た (POSIX.1)
ENETUNREACH ネ ッ ト ワ ー
ク が 到 達 不 能
で あ る (POSIX.1)
ENFILE シ ス テ ム 全 体 で オ ー プ ン さ れ て い
る フ ァ イ ル が 多 過 ぎ る (POSIX.1)
ENOBUFS
使 用 可 能 な バ ッ フ ァ ー 空 間 が な い (POSIX.1 (XSI STREAMS option))
ENODATA
ス ト リ ー ム の 読 み 出 し キ ュ ー の 先 頭 に 読 み 出 し 可 能 な メ ッ セ ー ジ が な い (POSIX.1)
ENODEV そ の よ う な デ バ
イ ス は 無 い (POSIX.1)
ENOENT そ の よ う な フ ァ イ ル や デ ィ レ
ク ト リ
は 無 い (POSIX.1)
ENOEXEC 実 行 フ ァ イ
ル 形 式 の エ ラ
ー (POSIX.1)
ENOKEY 要 求 さ れ た
鍵 が 利 用 で き
な い
ENOLCK 利 用 で き る
ロ ッ ク が 無 い
(POSIX.1)
ENOLINK リ ン ク が 切 れ て い る
(POSIX.1)
ENOMEDIUM メ デ ィ ア が 見 つ か ら な
い
ENOMEM 十 分 な 空 き メ モ リ ー 領 域 が 無 い
(POSIX.1)
ENOMSG 要 求 さ れ た 型 の メ ッ セ ー ジ が 存 在
し な い
(POSIX.1)
ENONET マ シ ン が ネ
ッ ト ワ ー ク 上
に な い
ENOPKG パ ッ ケ ー ジ
が イ ン ス ト ー
ル さ れ て い な
い
ENOPROTOOPT 指 定 さ れ た
プ ロ ト コ ル が
利 用 で き な い
(POSIX.1)
ENOSPC デ バ イ ス に
空 き 領 域 が 無
い
(POSIX.1)
ENOSR 指 定 さ れ た ス ト リ ー ム リ ソ ー ス が 存 在 し な い
(POSIX.1 (XSI
STREAMS option))
ENOSTR ス ト リ ー ム で は な い
(POSIX.1 (XSI STREAMS option))
ENOSYS 関 数 が 実 装 さ れ て い な
い (POSIX.1)
ENOTBLK ブ ロ ッ ク デ
バ イ ス が 必 要
で
あ る
ENOTCONN ソ ケ ッ ト が 接 続 さ れ て い な い
(POSIX.1)
ENOTDIR デ ィ レ ク ト リ で は な い
(POSIX.1)
ENOTEMPTY デ ィ レ ク ト リ が 空 で は な い
(POSIX.1)
ENOTSOCK ソ ケ ッ ト で は な い
(POSIX.1)
ENOTSUP 操 作 が サ ポ ー ト さ れ て い な い
(POSIX.1)
ENOTTY
I/O 制 御 操 作 が 適 切 で な い (POSIX.1)
ENOTUNIQ 名 前 が ネ ッ ト ワ ー ク で 一 意 で は な い
ENXIO そ の よ う な デ バ イ ス や ア ド レ ス は な い
(POSIX.1)
EOPNOTSUPP ソ ケ ッ ト で サ ポ ー ト し て い な い 操 作 で あ
る (POSIX.1)
(Linux で は ENOTSUP と EOPNOTSUPP は 同 じ 値 を 持 つ が 、 POSIX.1 に 従 え ば 両 者 の エ ラ ー 値 は 区 別 さ れ る べ き で あ る 。 )
EOVERFLOW 指 定 さ れ た デ ー タ 型 に 格 納 す る に は 値 が 大 き 過 ぎ る
(POSIX.1)
EPERM 操 作 が 許 可 さ れ て い な い
(POSIX.1)
EPFNOSUPPORT サ ポ ー ト さ れ て い な い プ ロ
ト コ ル フ ァ ミ リ ー で あ る
EPIPE パ イ プ が 壊 れ て い る
(POSIX.1)
EPROTO プ ロ ト コ ル エ ラ ー
(POSIX.1)
EPROTONOSUPPORT プ ロ ト コ ル が サ ポ ー
ト さ れ て い な い (POSIX.1)
EPROTOTYPE ソ ケ ッ ト に 指 定 で き な い プ ロ ト コ ル タ
イ プ で
あ る (POSIX.1)
ERANGE 結 果 が 大 き
過 ぎ る (POSIX.1, C99)
EREMCHG リ モ ー ト ア
ド レ ス が
変 わ っ た
EREMOTE オ ブ ジ ェ ク ト が リ モ ー ト に あ る
EREMOTEIO リ モ ー ト
I/O エ ラ ー
ERESTART シ ス テ ム コ ー ル が 中 断 さ れ 再 ス タ ー ト が 必 要 で あ る
EROFS 読 み 出 し 専 用 の フ ァ イ ル シ ス テ ム で あ る
(POSIX.1)
ESHUTDOWN 通 信 相 手 が シ ャ ッ ト ダ ウ ン さ れ て 送 信 で き な い
ESPIPE 無 効 な シ ー ク
(POSIX.1)
ESOCKTNOSUPPORT サ ポ ー ト さ れ て い な い ソ ケ ッ ト 種 別 で あ る
ESRCH そ の よ う な プ ロ セ ス は 無 い
(POSIX.1)
ESTALE フ ァ イ ル ハ ン ド ル が 古 い 状 態 に な っ て い る
(POSIX.1)
NFS や 他 の フ ァ イ ル シ ス テ ム で 起 こ り う る 。
ESTRPIPE ス ト リ ー ム パ イ プ エ ラ ー
ETIME 時 間 が 経 過 し た
(POSIX.1 (XSI STREAMS option))
(POSIX.1 で は "STREAM ioctl(2) timeout" と 書 か れ て い る )
ETIMEDOUT 操 作 が タ イ ム ア ウ ト し た
(POSIX.1)
ETXTBSY テ キ ス ト フ ァ イ ル が 使 用 中
で あ る
(POSIX.1)
EUCLEAN
Structure needs cleaning
EUNATCH
プ ロ ト
コ ル の ド ラ イ
バ が 付 与 (attach) さ
れ て い な い
EUSERS ユ ー ザ ー 数
が 多 過 ぎ る
EWOULDBLOCK 操 作 が ブ ロ ッ ク さ れ る 見 込 み で
あ る (EAGAIN と 同 じ 値 で も よ い ) (POSIX.1)
EXDEV
不 適 切
な リ ン ク (POSIX.1)
EXFULL 変 換 テ ー ブ
ル が 一
杯 で あ る
注 意
以 下 は よ く や る 間 違 い で あ る 。
if (somecall()
== −1) {
printf("somecall() failed\n");
if (errno == ...) { ... } } こ の よ
う に す る と 、
参 照 し て い る
時 点 で は errno は
も は や somecall() か
ら 返 さ れ た 値
を 保 持 し て い
る と は 限 ら な
い (printf(3) に よ り
変 更 さ れ て い
る か も し れ な
い )。 ラ イ ブ ラ
リ コ ー ル を ま
た い で errno の 値
を 保 存 し た い
場 合 は 、 以 下
の よ う に 保 存
し な け れ ば な
ら な い :
if (somecall()
== −1) {
int errsv = errno;
printf("somecall() failed\n");
if (errsv == ...) { ... } } 昔 の C で
は 、 <errno.h> を イ
ン ク ル ー ド す
る の で は な く
errno を 手 動 で (extern
int errno の よ う に ) 定
義 す る の が 一
般 的 で あ っ た
。 こ の よ う な
こ と は し な い
こ と 。 こ う す
る と 、 最 近 の
バ ー ジ ョ ン の C
ラ イ ブ ラ リ で
は 正 し く 動 作
し な い だ ろ う
。 し か し 、 (非
常 に ) 古 い UNIX シ ス
テ ム で は 、
<errno.h> が な く 、
宣 言 が 必 要 な
こ と が あ る か
も し れ な い 。
関 連 項 目
errno(1), err(3), error(3), perror(3), strerror(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。