| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「C エラー」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==C エラー==
+
==[[C エラー]]==
 
[[Programming C]] |  
 
[[Programming C]] |  
 
*system callが失敗すると、外部変数 errno に設定する。
 
*system callが失敗すると、外部変数 errno に設定する。
9行目: 9行目:
 
!意味
 
!意味
 
|-
 
|-
|EPERM
+
|EPE[[R]]M
 
|操作は許可されない
 
|操作は許可されない
 
|-
 
|-
15行目: 15行目:
 
|該当するfileまたはdirectoryが存在しない
 
|該当するfileまたはdirectoryが存在しない
 
|-
 
|-
|EINTR
+
|EINT[[R]]
 
|system callが割り込まれた
 
|system callが割り込まれた
 
|-
 
|-
22行目: 22行目:
 
|-
 
|-
 
|EBUSY
 
|EBUSY
|deviceまたはresourceが使用中
+
|de[[vi]]ceまたはresourceが使用中
 
|-
 
|-
 
|EEXIST
 
|EEXIST
34行目: 34行目:
 
|-
 
|-
 
|ENODEV
 
|ENODEV
|該当するdeviceが存在しない
+
|該当するde[[vi]]ceが存在しない
 
|-
 
|-
|EISDIR
+
|EISDI[[R]]
 
|directoryである
 
|directoryである
 
|-
 
|-
|ENOTDIR
+
|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 device or address
+
  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 : Resource temporarily unavailable
+
  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 device required
+
  15 : Block de[[vi]]ce required
  16 : Device or resource busy
+
  16 : De[[vi]]ce or resource busy
 
  17 : File exists
 
  17 : File exists
  18 : Invalid cross-device link
+
  18 : Invalid cross-de[[vi]]ce link
  19 : No such device
+
  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 device
+
  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 device
+
  28 : No space left on de[[vi]]ce
 
  29 : Illegal seek
 
  29 : Illegal seek
  30 : Read-only file system
+
  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 : Resource deadlock avoided
+
  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 : Device not a stream
+
  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 : Machine is not on the network
+
  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 : RFS specific error
+
  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 : Remote address changed
+
  78 : [[R]]emote address changed
 
  79 : Can not access a needed shared library
 
  79 : Can not access a needed shared library
  80 : Accessing a corrupted shared library
+
  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 : Remote I/O error
+
  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 : Required key not available
+
  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 service
+
  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 エラー

Programming 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

この本からの覚書。