「C エラー」の版間の差分
ナビゲーションに移動
検索に移動
| 1行目: | 1行目: | ||
| − | ==C エラー== | + | ==[[C エラー]]== |
[[Programming C]] | | [[Programming C]] | | ||
*system callが失敗すると、外部変数 errno に設定する。 | *system callが失敗すると、外部変数 errno に設定する。 | ||
| 9行目: | 9行目: | ||
!意味 | !意味 | ||
|- | |- | ||
| − | | | + | |EPE[[R]]M |
|操作は許可されない | |操作は許可されない | ||
|- | |- | ||
| 15行目: | 15行目: | ||
|該当するfileまたはdirectoryが存在しない | |該当するfileまたはdirectoryが存在しない | ||
|- | |- | ||
| − | | | + | |EINT[[R]] |
|system callが割り込まれた | |system callが割り込まれた | ||
|- | |- | ||
| 22行目: | 22行目: | ||
|- | |- | ||
|EBUSY | |EBUSY | ||
| − | | | + | |de[[vi]]ceまたはresourceが使用中 |
|- | |- | ||
|EEXIST | |EEXIST | ||
| 34行目: | 34行目: | ||
|- | |- | ||
|ENODEV | |ENODEV | ||
| − | | | + | |該当するde[[vi]]ceが存在しない |
|- | |- | ||
| − | | | + | |EISDI[[R]] |
|directoryである | |directoryである | ||
|- | |- | ||
| − | | | + | |ENOTDI[[R]] |
|direcotryではない | |direcotryではない | ||
|- | |- | ||
| 77行目: | 77行目: | ||
4 : Interrupted system call | 4 : Interrupted system call | ||
5 : Input/output error | 5 : Input/output error | ||
| − | 6 : No such | + | 6 : No such de[[vi]]ce or address |
7 : Argument list too long | 7 : Argument list too long | ||
8 : Exec format error | 8 : Exec format error | ||
9 : Bad file descriptor | 9 : Bad file descriptor | ||
10 : No child processes | 10 : No child processes | ||
| − | 11 : | + | 11 : [[R]]esource temporarily unavailable |
12 : Cannot allocate memory | 12 : Cannot allocate memory | ||
13 : Permission denied | 13 : Permission denied | ||
14 : Bad address | 14 : Bad address | ||
| − | 15 : Block | + | 15 : Block de[[vi]]ce required |
| − | 16 : | + | 16 : De[[vi]]ce or resource busy |
17 : File exists | 17 : File exists | ||
| − | 18 : Invalid cross- | + | 18 : Invalid cross-de[[vi]]ce link |
| − | 19 : No such | + | 19 : No such de[[vi]]ce |
20 : Not a directory | 20 : Not a directory | ||
21 : Is a directory | 21 : Is a directory | ||
| 96行目: | 96行目: | ||
23 : Too many open files in system | 23 : Too many open files in system | ||
24 : Too many open files | 24 : Too many open files | ||
| − | 25 : Inappropriate ioctl for | + | 25 : Inappropriate ioctl for de[[vi]]ce |
26 : Text file busy | 26 : Text file busy | ||
27 : File too large | 27 : File too large | ||
| − | 28 : No space left on | + | 28 : No space left on de[[vi]]ce |
29 : Illegal seek | 29 : Illegal seek | ||
| − | 30 : | + | 30 : [[R]]ead-only file system |
31 : Too many links | 31 : Too many links | ||
32 : Broken pipe | 32 : Broken pipe | ||
33 : Numerical argument out of domain | 33 : Numerical argument out of domain | ||
34 : Numerical result out of range | 34 : Numerical result out of range | ||
| − | 35 : | + | 35 : [[R]]esource deadlock avoided |
36 : File name too long | 36 : File name too long | ||
37 : No locks available | 37 : No locks available | ||
| 131行目: | 131行目: | ||
58 : Unknown error 58 | 58 : Unknown error 58 | ||
59 : Bad font file format | 59 : Bad font file format | ||
| − | 60 : | + | 60 : De[[vi]]ce not a stream |
61 : No data available | 61 : No data available | ||
62 : Timer expired | 62 : Timer expired | ||
63 : Out of streams resources | 63 : Out of streams resources | ||
| − | 64 : | + | 64 : [[Mac]]hine is not on the network |
65 : Package not installed | 65 : Package not installed | ||
66 : Object is remote | 66 : Object is remote | ||
| 144行目: | 144行目: | ||
71 : Protocol error | 71 : Protocol error | ||
72 : Multihop attempted | 72 : Multihop attempted | ||
| − | 73 : | + | 73 : [[R]]FS specific error |
74 : Bad message | 74 : Bad message | ||
75 : Value too large for defined data type | 75 : Value too large for defined data type | ||
76 : Name not unique on network | 76 : Name not unique on network | ||
77 : File descriptor in bad state | 77 : File descriptor in bad state | ||
| − | 78 : | + | 78 : [[R]]emote address changed |
79 : Can not access a needed shared library | 79 : Can not access a needed shared library | ||
| − | 80 : | + | 80 : [[Access]]ing a corrupted shared library |
81 : .lib section in a.out corrupted | 81 : .lib section in a.out corrupted | ||
82 : Attempting to link in too many shared libraries | 82 : Attempting to link in too many shared libraries | ||
| 192行目: | 192行目: | ||
119 : No XENIX semaphores available | 119 : No XENIX semaphores available | ||
120 : Is a named type file | 120 : Is a named type file | ||
| − | 121 : | + | 121 : [[R]]emote I/O error |
122 : Disk quota exceeded | 122 : Disk quota exceeded | ||
123 : No medium found | 123 : No medium found | ||
124 : Wrong medium type | 124 : Wrong medium type | ||
125 : Operation canceled | 125 : Operation canceled | ||
| − | 126 : | + | 126 : [[R]]equired key not available |
127 : Key has expired | 127 : Key has expired | ||
128 : Key has been revoked | 128 : Key has been revoked | ||
| − | 129 : Key was rejected by | + | 129 : Key was rejected by ser[[vi]]ce |
130 : Owner died | 130 : Owner died | ||
131 : State not recoverable | 131 : State not recoverable | ||
2020年2月16日 (日) 04:22時点における最新版
C エラー
- system callが失敗すると、外部変数 errno に設定する。
- errnoの値は該当する関数を呼び出した直後に調べる必要がある。
- 値と意味は、error.hに記述されている。
| 値 | 意味 |
|---|---|
| EPERM | 操作は許可されない |
| ENOENT | 該当するfileまたはdirectoryが存在しない |
| EINTR | system callが割り込まれた |
| EIO | I/O error |
| EBUSY | deviceまたはresourceが使用中 |
| EEXIST | fileが存在する |
| EINVAL | 引数が無効 |
| EMFILE | openされているfileが多すぎる |
| ENODEV | 該当するdeviceが存在しない |
| EISDIR | directoryである |
| ENOTDIR | direcotryではない |
strerror
#include <string.h> char *strerror(int errnum);
- 指定されたerror番号のerrorの種類を説明する文字列を返す。
perror
#include <stdio.h> void perror(const char *s);
- errnoが示す現在のerrorの種類を説明する文字列を標準error出力に出力する。
- 文字列sがNULLでなければ、sで指定された文字列に続いて、: と空白を出力してから、error種類をあらわす文字列を出力する。
#include <string.h>
#include <error.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buf;
buf = (char *)malloc(sizeof(char) * 256);
for (i=0; i<256; i++) {
buf = strerror(i);
printf("%d : %s\n", i,buf);
}
free(buf);
}
0 : Success 1 : Operation not permitted 2 : No such file or directory 3 : No such process 4 : Interrupted system call 5 : Input/output error 6 : No such device or address 7 : Argument list too long 8 : Exec format error 9 : Bad file descriptor 10 : No child processes 11 : Resource temporarily unavailable 12 : Cannot allocate memory 13 : Permission denied 14 : Bad address 15 : Block device required 16 : Device or resource busy 17 : File exists 18 : Invalid cross-device link 19 : No such device 20 : Not a directory 21 : Is a directory 22 : Invalid argument 23 : Too many open files in system 24 : Too many open files 25 : Inappropriate ioctl for device 26 : Text file busy 27 : File too large 28 : No space left on device 29 : Illegal seek 30 : Read-only file system 31 : Too many links 32 : Broken pipe 33 : Numerical argument out of domain 34 : Numerical result out of range 35 : Resource deadlock avoided 36 : File name too long 37 : No locks available 38 : Function not implemented 39 : Directory not empty 40 : Too many levels of symbolic links 41 : Unknown error 41 42 : No message of desired type 43 : Identifier removed 44 : Channel number out of range 45 : Level 2 not synchronized 46 : Level 3 halted 47 : Level 3 reset 48 : Link number out of range 49 : Protocol driver not attached 50 : No CSI structure available 51 : Level 2 halted 52 : Invalid exchange 53 : Invalid request descriptor 54 : Exchange full 55 : No anode 56 : Invalid request code 57 : Invalid slot 58 : Unknown error 58 59 : Bad font file format 60 : Device not a stream 61 : No data available 62 : Timer expired 63 : Out of streams resources 64 : Machine is not on the network 65 : Package not installed 66 : Object is remote 67 : Link has been severed 68 : Advertise error 69 : Srmount error 70 : Communication error on send 71 : Protocol error 72 : Multihop attempted 73 : RFS specific error 74 : Bad message 75 : Value too large for defined data type 76 : Name not unique on network 77 : File descriptor in bad state 78 : Remote address changed 79 : Can not access a needed shared library 80 : Accessing a corrupted shared library 81 : .lib section in a.out corrupted 82 : Attempting to link in too many shared libraries 83 : Cannot exec a shared library directly 84 : Invalid or incomplete multibyte or wide character 85 : Interrupted system call should be restarted 86 : Streams pipe error 87 : Too many users 88 : Socket operation on non-socket 89 : Destination address required 90 : Message too long 91 : Protocol wrong type for socket 92 : Protocol not available 93 : Protocol not supported 94 : Socket type not supported 95 : Operation not supported 96 : Protocol family not supported 97 : Address family not supported by protocol 98 : Address already in use 99 : Cannot assign requested address 100 : Network is down 101 : Network is unreachable 102 : Network dropped connection on reset 103 : Software caused connection abort 104 : Connection reset by peer 105 : No buffer space available 106 : Transport endpoint is already connected 107 : Transport endpoint is not connected 108 : Cannot send after transport endpoint shutdown 109 : Too many references: cannot splice 110 : Connection timed out 111 : Connection refused 112 : Host is down 113 : No route to host 114 : Operation already in progress 115 : Operation now in progress 116 : Stale NFS file handle 117 : Structure needs cleaning 118 : Not a XENIX named type file 119 : No XENIX semaphores available 120 : Is a named type file 121 : Remote I/O error 122 : Disk quota exceeded 123 : No medium found 124 : Wrong medium type 125 : Operation canceled 126 : Required key not available 127 : Key has expired 128 : Key has been revoked 129 : Key was rejected by service 130 : Owner died 131 : State not recoverable
この本からの覚書。
© 2006 矢木浩人