C エラー
ナビゲーションに移動
検索に移動
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 矢木浩人