File: errno.3

package info (click to toggle)
manpages-ja 0.5.0.0.20210215%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 28,568 kB
  • sloc: perl: 161; makefile: 58
file content (500 lines) | stat: -rw-r--r-- 15,481 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
.\" 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
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.\" 5 Oct 2002, Modified by Michael Kerrisk <mtk.manpages@gmail.com>
.\" 	Updated for POSIX.1 2001
.\" 2004-12-17 Martin Schulze <joey@infodrom.org>, 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 <nishi@rpts.cl.nec.co.jp>
.\" Updated 1999-03-01, NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Updated 1999-08-21, NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\" Updated 2003-07-03, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\" 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 <errno.h>\fP
.SH 説明
ヘッダーファイル \fI<errno.h>\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<errno.h>\fP をインクルードするのではなく \fIerrno\fP を手動で (\fIextern int
errno\fP のように) 定義するのが一般的であった。 \fBこのようなことはしないこと\fP。 こうすると、最近のバージョンの C
ライブラリでは正しく動作しないだろう。 しかし、(非常に) 古い UNIX システムでは、 \fI<errno.h>\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/ に書かれている。