.\" Copyright (c) 1996 Andries Brouwer (aeb@cwi.nl) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\" 5 Oct 2002, Modified by Michael Kerrisk .\" Updated for POSIX.1 2001 .\" 2004-12-17 Martin Schulze , mtk .\" Removed errno declaration prototype, added notes .\" 2006-02-09 Kurt Wall, mtk .\" Added non-POSIX errors .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1997 HIROFUMI Nishizuka .\" all rights reserved. .\" Translated 1997-12-24, HIROFUMI Nishizuka .\" Updated 1999-03-01, NAKANO Takeo .\" Updated 1999-08-21, NAKANO Takeo .\" Updated 2003-07-03, Akihiro MOTOKI .\" Updated 2005-03-15, Akihiro MOTOKI .\" Updated 2006-02-15, Akihiro MOTOKI, Catch up to LDP v2.23 .\" Updated 2006-07-14, Akihiro MOTOKI, Catch up to LDP v2.34 .\" Updated 2008-08-07, Akihiro MOTOKI, Catch up to LDP v3.05 .\" .TH ERRNO 3 2015\-01\-22 "" "Linux Programmer's Manual" .SH 名前 errno \- 直近に発生したエラーの番号 .SH 書式 .\".sp .\".BI "extern int " errno ; \fB#include \fP .SH 説明 ヘッダーファイル \fI\fP で整数型の変数 \fIerrno\fP が定義されており、 システムコールやいくつかのライブラリ関数は、エラーが発生した際に この変数にその原因を示す値を設定する。 この値は呼び出しの返り値がエラー (ほとんどのシステムコールでは \-1 で、ほとんどのライブラリ関数では \-1 か NULL) を示したときに のみ意味を持つが、ライブラリ関数は成功した場合も \fIerrno\fP を変更することが許されている。 有効なエラー番号はいずれも 0 以外の値を持つ。 どのシステムコールもライブラリ関数も \fIerrno\fP を 0 に設定することはない。 いくつかのシステムコールやライブラリ関数 (例えば \fBgetpriority\fP(2)) では、成功した場合の有効な返り値として \-1 が返されることがある。 このような場合、成功なのかエラーなのかを区別するためには、 呼び出しの前に \fIerrno\fP を 0 に設定しておけばよい。呼び出しの返り値がエラー発生の可能性を 示すものだった場合には、 \fIerrno\fP が 0 以外の値かを見て確認すればよい。 \fIerrno\fP は、ISO C standard で \fIint\fP 型の変更可能な左辺値 として定義されており、明示的に宣言を行ってはならない; \fIerrno\fP はマクロの場合もありえる。 \fIerrno\fP はスレッド毎に値を持つ。 つまりあるスレッドで \fIerrno\fP が設定されても、 他のスレッドの \fIerrno\fP には影響しない。 POSIX.1 で定義されているすべてのエラー名には、 それぞれ異なる値が対応していなければならない。 但し、 \fBEAGAIN\fP と \fBEWOULDBLOCK\fP は例外で、これらは同じ値を持ってもよい。 .\" The following is now .\" POSIX.1 (2001 edition) lists the following symbolic error names. Of .\" these, \fBEDOM\fP and \fBERANGE\fP are in the ISO C standard. ISO C .\" Amendment 1 defines the additional error number \fBEILSEQ\fP for .\" coding errors in multibyte or wide characters. .\" Below is a list of the symbolic error names that are defined on Linux. Some of these are marked \fIPOSIX.1\fP, indicating that the name is defined by POSIX.1\-2001, or \fIC99\fP, indicating that the name is defined by C99. .TP 16 \fBE2BIG\fP 引き数リストが長過ぎる (POSIX.1) .TP \fBEACCES\fP 許可がない (POSIX.1) .TP \fBEADDRINUSE\fP アドレスがすでに使用されている (POSIX.1) .TP \fBEADDRNOTAVAIL\fP .\" EADV is only an error on HURD(?) アドレスが使用できない (POSIX.1) .TP \fBEAFNOSUPPORT\fP アドレスファミリーがサポートされていない (POSIX.1) .TP \fBEAGAIN\fP リソースが一時的に利用不可 (\fBEWOULDBLOCK\fP と同じ値でもよい) (POSIX.1) .TP \fBEALREADY\fP 接続が既に処理中である (POSIX.1) .TP \fBEBADE\fP 不正なやり取り (exchange) である .TP \fBEBADF\fP ファイルディスクリプターが不正である (POSIX.1) .TP \fBEBADFD\fP ファイルディスクリプターが不正な状態である .TP \fBEBADMSG\fP メッセージが不正である (POSIX.1) .TP \fBEBADR\fP 不正なリクエストディスクリプター .TP \fBEBADRQC\fP 不正なリクエストコード .TP \fBEBADSLT\fP .\" EBFONT is defined but appears not to be used by kernel or glibc. 不正なスロット .TP \fBEBUSY\fP リソースが使用中である (POSIX.1) .TP \fBECANCELED\fP 操作がキャンセルされた (POSIX.1) .TP \fBECHILD\fP 子プロセスが無い (POSIX.1) .TP \fBECHRNG\fP チャンネル番号が範囲外である .TP \fBECOMM\fP 送信時に通信エラーが発生した .TP \fBECONNABORTED\fP 接続が中止された (POSIX.1) .TP \fBECONNREFUSED\fP 接続が拒否された (POSIX.1) .TP \fBECONNRESET\fP 接続がリセットされた (POSIX.1) .TP \fBEDEADLK\fP リソースのデッドロックを回避した (POSIX.1) .TP \fBEDEADLOCK\fP \fBEDEADLK\fP の同義語 .TP \fBEDESTADDRREQ\fP 宛先アドレスが必要である (POSIX.1) .TP \fBEDOM\fP .\" EDOTDOT is defined but appears to be unused 数学関数で引き数が領域外である (out of domain) .TP \fBEDQUOT\fP .\" POSIX just says "Reserved" ディスククォータ (quota) を超過した (POSIX.1) .TP \fBEEXIST\fP ファイルが存在する (POSIX.1) .TP \fBEFAULT\fP アドレスが不正である (POSIX.1) .TP \fBEFBIG\fP ファイルが大き過ぎる (POSIX.1) .TP \fBEHOSTDOWN\fP ホストがダウンしている .TP \fBEHOSTUNREACH\fP ホストに到達不能である (POSIX.1) .TP \fBEIDRM\fP 識別子が削除された (POSIX.1) .TP \fBEILSEQ\fP 不正なバイト列 (POSIX.1, C99) .TP \fBEINPROGRESS\fP 操作が実行中である (POSIX.1) .TP \fBEINTR\fP 関数呼び出しが割り込まれた (POSIX.1); \fBsignal\fP(7) 参照。 .TP \fBEINVAL\fP 引数が無効である (POSIX.1) .TP \fBEIO\fP 入出力エラー (POSIX.1) .TP \fBEISCONN\fP ソケットが接続されている (POSIX.1) .TP \fBEISDIR\fP ディレクトリである (POSIX.1) .TP \fBEISNAM\fP 名前付きのファイルである .TP \fBEKEYEXPIRED\fP 鍵が期限切れとなった .TP \fBEKEYREJECTED\fP 鍵がサーバにより拒否された .TP \fBEKEYREVOKED\fP 鍵が無効となった .TP \fBEL2HLT\fP 停止 (レベル 2) .TP \fBEL2NSYNC\fP 同期できていない (レベル 2) .TP \fBEL3HLT\fP 停止 (レベル 3) .TP \fBEL3RST\fP 停止 (レベル 3) .TP \fBELIBACC\fP 必要な共有ライブラリにアクセスできなかった .TP \fBELIBBAD\fP 壊れた共有ライブラリにアクセスしようとした .TP \fBELIBMAX\fP リンクしようとした共有ライブラリが多過ぎる .TP \fBELIBSCN\fP a.out のライブラリセクションが壊れている (corrupted) .TP \fBELIBEXEC\fP 共有ライブラリを直接実行できなかった .TP \fBELOOP\fP .\" ELNRNG is defined but appears to be unused シンボリックリンクの回数が多過ぎる (POSIX.1) .TP \fBEMEDIUMTYPE\fP 間違ったメディア種別である .TP \fBEMFILE\fP オープンしているファイルが多過ぎる (POSIX.1)。 通常は \fBgetrlimit\fP(2) に説明があるリソース上限 \fBRLIMIT_NOFILE\fP を超過した場合に発生する。 .TP \fBEMLINK\fP リンクが多過ぎる (POSIX.1) .TP \fBEMSGSIZE\fP メッセージが長過ぎる (POSIX.1) .TP \fBEMULTIHOP\fP .\" POSIX says "Reserved" マルチホップ (multihop) を試みた (POSIX.1) .TP \fBENAMETOOLONG\fP .\" ENAVAIL is defined, but appears not to be used ファイル名が長過ぎる (POSIX.1) .TP \fBENETDOWN\fP ネットワークが不通である (POSIX.1) .TP \fBENETRESET\fP 接続がネットワーク側から中止された (POSIX.1) .TP \fBENETUNREACH\fP ネットワークが到達不能である (POSIX.1) .TP \fBENFILE\fP .\" ENOANO is defined but appears to be unused. システム全体でオープンされているファイルが多過ぎる (POSIX.1) .TP \fBENOBUFS\fP .\" ENOCSI is defined but appears to be unused. 使用可能なバッファー空間がない (POSIX.1 (XSI STREAMS option)) .TP \fBENODATA\fP ストリームの読み出しキューの先頭に読み出し可能なメッセージがない (POSIX.1) .TP \fBENODEV\fP そのようなデバイスは無い (POSIX.1) .TP \fBENOENT\fP そのようなファイルやディレクトリは無い (POSIX.1) .TP \fBENOEXEC\fP 実行ファイル形式のエラー (POSIX.1) .TP \fBENOKEY\fP 要求された鍵が利用できない .TP \fBENOLCK\fP 利用できるロックが無い (POSIX.1) .TP \fBENOLINK\fP .\" POSIX says "Reserved" リンクが切れている (POSIX.1) .TP \fBENOMEDIUM\fP メディアが見つからない .TP \fBENOMEM\fP 十分な空きメモリー領域が無い (POSIX.1) .TP \fBENOMSG\fP 要求された型のメッセージが存在しない (POSIX.1) .TP \fBENONET\fP マシンがネットワーク上にない .TP \fBENOPKG\fP パッケージがインストールされていない .TP \fBENOPROTOOPT\fP 指定されたプロトコルが利用できない (POSIX.1) .TP \fBENOSPC\fP デバイスに空き領域が無い (POSIX.1) .TP \fBENOSR\fP 指定されたストリームリソースが存在しない (POSIX.1 (XSI STREAMS option)) .TP \fBENOSTR\fP ストリームではない (POSIX.1 (XSI STREAMS option)) .TP \fBENOSYS\fP 関数が実装されていない (POSIX.1) .TP \fBENOTBLK\fP ブロックデバイスが必要である .TP \fBENOTCONN\fP ソケットが接続されていない (POSIX.1) .TP \fBENOTDIR\fP ディレクトリではない (POSIX.1) .TP \fBENOTEMPTY\fP .\" ENOTNAM is defined but appears to be unused. ディレクトリが空ではない (POSIX.1) .TP \fBENOTSOCK\fP ソケットではない (POSIX.1) .TP \fBENOTSUP\fP 操作がサポートされていない (POSIX.1) .TP \fBENOTTY\fP I/O 制御操作が適切でない (POSIX.1) .TP \fBENOTUNIQ\fP 名前がネットワークで一意ではない .TP \fBENXIO\fP そのようなデバイスやアドレスはない (POSIX.1) .TP \fBEOPNOTSUPP\fP ソケットでサポートしていない操作である (POSIX.1) .sp (Linux では \fBENOTSUP\fP と \fBEOPNOTSUPP\fP は同じ値を持つが、 POSIX.1 に従えば両者のエラー値は区別されるべきである。) .TP \fBEOVERFLOW\fP 指定されたデータ型に格納するには値が大き過ぎる (POSIX.1) .TP \fBEPERM\fP 操作が許可されていない (POSIX.1) .TP \fBEPFNOSUPPORT\fP サポートされていないプロトコルファミリーである .TP \fBEPIPE\fP パイプが壊れている (POSIX.1) .TP \fBEPROTO\fP プロトコルエラー (POSIX.1) .TP \fBEPROTONOSUPPORT\fP プロトコルがサポートされていない (POSIX.1) .TP \fBEPROTOTYPE\fP ソケットに指定できないプロトコルタイプである (POSIX.1) .TP \fBERANGE\fP 結果が大き過ぎる (POSIX.1, C99) .TP \fBEREMCHG\fP リモートアドレスが変わった .TP \fBEREMOTE\fP オブジェクトがリモートにある .TP \fBEREMOTEIO\fP リモート I/O エラー .TP \fBERESTART\fP システムコールが中断され再スタートが必要である .TP \fBEROFS\fP 読み出し専用のファイルシステムである (POSIX.1) .TP \fBESHUTDOWN\fP 通信相手がシャットダウンされて送信できない .TP \fBESPIPE\fP 無効なシーク (POSIX.1) .TP \fBESOCKTNOSUPPORT\fP サポートされていないソケット種別である .TP \fBESRCH\fP .\" ESRMNT is defined but appears not to be used そのようなプロセスは無い (POSIX.1) .TP \fBESTALE\fP ファイルハンドルが古い状態になっている (POSIX.1) .sp NFS や他のファイルシステムで起こりうる。 .TP \fBESTRPIPE\fP ストリームパイプエラー .TP \fBETIME\fP 時間が経過した (POSIX.1 (XSI STREAMS option)) .sp (POSIX.1 では "STREAM \fBioctl\fP(2) timeout" と書かれている) .TP \fBETIMEDOUT\fP .\" ETOOMANYREFS is defined, but appears not to be used. 操作がタイムアウトした (POSIX.1) .TP \fBETXTBSY\fP テキストファイルが使用中である (POSIX.1) .TP \fBEUCLEAN\fP Structure needs cleaning .TP \fBEUNATCH\fP プロトコルのドライバが付与 (attach) されていない .TP \fBEUSERS\fP ユーザー数が多過ぎる .TP \fBEWOULDBLOCK\fP 操作がブロックされる見込みである (\fBEAGAIN\fP と同じ値でもよい) (POSIX.1) .TP \fBEXDEV\fP 不適切なリンク (POSIX.1) .TP \fBEXFULL\fP 変換テーブルが一杯である .SH 注意 以下はよくやる間違いである。 .in +4n .nf if (somecall() == \-1) { printf("somecall() failed\en"); if (errno == ...) { ... } } .fi .in このようにすると、参照している時点では \fIerrno\fP はもはや \fIsomecall\fP() から返された値を保持しているとは限らない (\fBprintf\fP(3) により変更されているかもしれない)。 ライブラリコールをまたいで \fIerrno\fP の値を保存したい場合は、以下のように保存しなければならない: .in +4n .nf if (somecall() == \-1) { int errsv = errno; printf("somecall() failed\en"); if (errsv == ...) { ... } } .fi .in .PP 昔の C では、 \fI\fP をインクルードするのではなく \fIerrno\fP を手動で (\fIextern int errno\fP のように) 定義するのが一般的であった。 \fBこのようなことはしないこと\fP。 こうすると、最近のバージョンの C ライブラリでは正しく動作しないだろう。 しかし、(非常に) 古い UNIX システムでは、 \fI\fP がなく、宣言が必要なことがあるかもしれない。 .SH 関連項目 .\" In the moreutils package \fBerrno\fP(1), \fBerr\fP(3), \fBerror\fP(3), \fBperror\fP(3), \fBstrerror\fP(3) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。