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 矢木浩人