Manpages

名 前

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 で 定 義 さ れ て い る す べ て の エ ラ ー 名 に は 、 そ れ ぞ れ 異 な る 値 が 対 応 し て い な け れ ば な ら な い 。 但 し 、 EAGAINEWOULDBLOCK は 例 外 で 、 こ れ ら は 同 じ 値 を 持 っ て も よ い 。

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 で は ENOTSUPEOPNOTSUPP は 同 じ 値 を 持 つ が 、 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/ に 書 か れ て い る 。