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 は 例 外 で
、 こ れ ら は 同
じ 値 を 持 っ て
も よ い 。
|
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
の 同 義 語
宛 先 ア
ド レ ス が 必 要
で あ る (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) |
|
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)
使 用 可
能 な バ ッ フ ァ
空 間 が な い (POSIX.1 (XSI
STREAMS option))
ス ト リ
ー ム の 読 み 出
し キ ュ ー の 先
頭 に 読 み 出 し
可 能 な メ ッ セ
ー ジ が な い (POSIX.1)
イ ス は
無 い (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)
結 果 が
大 き 過 ぎ る (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
プ ロ ト
コ ル の ド ラ イ
バ が 付 与 (attach) さ
れ て い な い
EUSERS ユ ー ザ 数 が
多 過 ぎ る
|
|
|
|
|
EWOULDBLOCK 操 作 が ブ
ロ ッ ク さ れ る
見 込 み で |
|
|
あ る
(EAGAIN と 同 じ 値 で
も よ い ) (POSIX.1)
不 適 切
な リ ン ク (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> が な く 、
宣 言 が 必 要 な
こ と が あ る か
も し れ な い 。
err(3), error(3), perror(3),
strerror(3)
| | | | | | | |