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

MyMemoWiki

C エラー

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

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

  1. #include <string.h>
  2. char *strerror(int errnum);
  • 指定されたerror番号のerrorの種類を説明する文字列を返す。

perror

  1. #include <stdio.h>
  2. void perror(const char *s);
  • errnoが示す現在のerrorの種類を説明する文字列を標準error出力に出力する。
  • 文字列sがNULLでなければ、sで指定された文字列に続いて、: と空白を出力してから、error種類をあらわす文字列を出力する。

  1. #include <string.h>
  2. #include <error.h>
  3. #include <stdint.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. int main()
  7. {
  8. char *buf;
  9. buf = (char *)malloc(sizeof(char) * 256);
  10. for (i=0; i<256; i++) {
  11. buf = strerror(i);
  12. printf("%d : %s\n", i,buf);
  13. }
  14. free(buf);
  15. }
  1. 0 : Success
  2. 1 : Operation not permitted
  3. 2 : No such file or directory
  4. 3 : No such process
  5. 4 : Interrupted system call
  6. 5 : Input/output error
  7. 6 : No such device or address
  8. 7 : Argument list too long
  9. 8 : Exec format error
  10. 9 : Bad file descriptor
  11. 10 : No child processes
  12. 11 : Resource temporarily unavailable
  13. 12 : Cannot allocate memory
  14. 13 : Permission denied
  15. 14 : Bad address
  16. 15 : Block device required
  17. 16 : Device or resource busy
  18. 17 : File exists
  19. 18 : Invalid cross-device link
  20. 19 : No such device
  21. 20 : Not a directory
  22. 21 : Is a directory
  23. 22 : Invalid argument
  24. 23 : Too many open files in system
  25. 24 : Too many open files
  26. 25 : Inappropriate ioctl for device
  27. 26 : Text file busy
  28. 27 : File too large
  29. 28 : No space left on device
  30. 29 : Illegal seek
  31. 30 : Read-only file system
  32. 31 : Too many links
  33. 32 : Broken pipe
  34. 33 : Numerical argument out of domain
  35. 34 : Numerical result out of range
  36. 35 : Resource deadlock avoided
  37. 36 : File name too long
  38. 37 : No locks available
  39. 38 : Function not implemented
  40. 39 : Directory not empty
  41. 40 : Too many levels of symbolic links
  42. 41 : Unknown error 41
  43. 42 : No message of desired type
  44. 43 : Identifier removed
  45. 44 : Channel number out of range
  46. 45 : Level 2 not synchronized
  47. 46 : Level 3 halted
  48. 47 : Level 3 reset
  49. 48 : Link number out of range
  50. 49 : Protocol driver not attached
  51. 50 : No CSI structure available
  52. 51 : Level 2 halted
  53. 52 : Invalid exchange
  54. 53 : Invalid request descriptor
  55. 54 : Exchange full
  56. 55 : No anode
  57. 56 : Invalid request code
  58. 57 : Invalid slot
  59. 58 : Unknown error 58
  60. 59 : Bad font file format
  61. 60 : Device not a stream
  62. 61 : No data available
  63. 62 : Timer expired
  64. 63 : Out of streams resources
  65. 64 : Machine is not on the network
  66. 65 : Package not installed
  67. 66 : Object is remote
  68. 67 : Link has been severed
  69. 68 : Advertise error
  70. 69 : Srmount error
  71. 70 : Communication error on send
  72. 71 : Protocol error
  73. 72 : Multihop attempted
  74. 73 : RFS specific error
  75. 74 : Bad message
  76. 75 : Value too large for defined data type
  77. 76 : Name not unique on network
  78. 77 : File descriptor in bad state
  79. 78 : Remote address changed
  80. 79 : Can not access a needed shared library
  81. 80 : Accessing a corrupted shared library
  82. 81 : .lib section in a.out corrupted
  83. 82 : Attempting to link in too many shared libraries
  84. 83 : Cannot exec a shared library directly
  85. 84 : Invalid or incomplete multibyte or wide character
  86. 85 : Interrupted system call should be restarted
  87. 86 : Streams pipe error
  88. 87 : Too many users
  89. 88 : Socket operation on non-socket
  90. 89 : Destination address required
  91. 90 : Message too long
  92. 91 : Protocol wrong type for socket
  93. 92 : Protocol not available
  94. 93 : Protocol not supported
  95. 94 : Socket type not supported
  96. 95 : Operation not supported
  97. 96 : Protocol family not supported
  98. 97 : Address family not supported by protocol
  99. 98 : Address already in use
  100. 99 : Cannot assign requested address
  101. 100 : Network is down
  102. 101 : Network is unreachable
  103. 102 : Network dropped connection on reset
  104. 103 : Software caused connection abort
  105. 104 : Connection reset by peer
  106. 105 : No buffer space available
  107. 106 : Transport endpoint is already connected
  108. 107 : Transport endpoint is not connected
  109. 108 : Cannot send after transport endpoint shutdown
  110. 109 : Too many references: cannot splice
  111. 110 : Connection timed out
  112. 111 : Connection refused
  113. 112 : Host is down
  114. 113 : No route to host
  115. 114 : Operation already in progress
  116. 115 : Operation now in progress
  117. 116 : Stale NFS file handle
  118. 117 : Structure needs cleaning
  119. 118 : Not a XENIX named type file
  120. 119 : No XENIX semaphores available
  121. 120 : Is a named type file
  122. 121 : Remote I/O error
  123. 122 : Disk quota exceeded
  124. 123 : No medium found
  125. 124 : Wrong medium type
  126. 125 : Operation canceled
  127. 126 : Required key not available
  128. 127 : Key has expired
  129. 128 : Key has been revoked
  130. 129 : Key was rejected by service
  131. 130 : Owner died
  132. 131 : State not recoverable

この本からの覚書。