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
の 同 義 語
宛 先 ア
ド レ ス が 必 要
で あ る (POSIX.1)
|
EDOM 数 学
関 数 で 引 き 数
が 領 域 外 で |
|
あ る (out of
domain)
EDQUOT デ ィ ス ク ク
ォ ー タ (quota) を 超
過 し た (POSIX.1)
EEXIST フ ァ イ ル が
存 在 す る (POSIX.1)
る (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)
使 用 可
能 な バ ッ フ ァ
ー 空 間 が な い
(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)
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
プ ロ ト
コ ル の ド ラ イ
バ が 付 与 (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> が な く 、
宣 言 が 必 要 な
こ と が あ る か
も し れ な い 。
errno(1),
err(3), error(3), perror(3),
strerror(3)
こ の man ペ
ー ジ は Linux man−pages
プ ロ ジ ェ ク ト
の リ リ ー ス 3.79 の
一 部 で あ る 。
プ ロ ジ ェ ク ト
の 説 明 と バ グ
報 告 に 関 す る
情 報 は
http://www.kernel.org/doc/man−pages/ に 書
か れ て い る 。
| | | | | | | |