列出所有有效的strerror串值

来源:互联网 发布:电力数据网接入设备 编辑:程序博客网 时间:2024/06/05 14:25

正在看闲书, 看到strerror时, 想写个demo看看所有的错误信息列表.
在linux中man errono, 看到的值是错误值的宏和错误消息字符串, 本来想将错误值的宏和错误消息串整完了, 做个数组以后用, 一想用处好像也不大. 就将全部错误串打出来看看就好.

实验

// @file 1_P12.cpp// @brief list dir#include <stdlib.h>#include <stdio.h>#include <string.h>#include <string> // for std::string#include <sys/types.h>#include <dirent.h>#include <unistd.h>#include <error.h>int main(int argc, char** argv){    int i = 0;    int i_unknown_cnt = 0;    std::string str_tmp = "";    printf(">> 1_P12\n");    for(i_unknown_cnt = 0, i = 0; (i >= 0) && (i_unknown_cnt < 100); i++) {        str_tmp = strerror(i);        if (NULL == strstr(str_tmp.c_str(), "Unknown error")) {            printf("errno = %4d : %s\n", i, str_tmp.c_str());        } else {            i_unknown_cnt++;        }    }    printf("------------------------------------------------------------\n");    for(i_unknown_cnt = 0, i = -1; (i < 0) && (i_unknown_cnt < 100); i--) {        str_tmp = strerror(i);        if (NULL == strstr(str_tmp.c_str(), "Unknown error")) {            printf("errno = %4d : %s\n", i, str_tmp.c_str());        } else {            i_unknown_cnt++;        }    }    printf("END\n");    exit(0);}/** run result[root@localhost dev]# ./1_P12 >> 1_P12errno =    0 : Successerrno =    1 : Operation not permittederrno =    2 : No such file or directoryerrno =    3 : No such processerrno =    4 : Interrupted system callerrno =    5 : Input/output errorerrno =    6 : No such device or addresserrno =    7 : Argument list too longerrno =    8 : Exec format errorerrno =    9 : Bad file descriptorerrno =   10 : No child processeserrno =   11 : Resource temporarily unavailableerrno =   12 : Cannot allocate memoryerrno =   13 : Permission deniederrno =   14 : Bad addresserrno =   15 : Block device requirederrno =   16 : Device or resource busyerrno =   17 : File existserrno =   18 : Invalid cross-device linkerrno =   19 : No such deviceerrno =   20 : Not a directoryerrno =   21 : Is a directoryerrno =   22 : Invalid argumenterrno =   23 : Too many open files in systemerrno =   24 : Too many open fileserrno =   25 : Inappropriate ioctl for deviceerrno =   26 : Text file busyerrno =   27 : File too largeerrno =   28 : No space left on deviceerrno =   29 : Illegal seekerrno =   30 : Read-only file systemerrno =   31 : Too many linkserrno =   32 : Broken pipeerrno =   33 : Numerical argument out of domainerrno =   34 : Numerical result out of rangeerrno =   35 : Resource deadlock avoidederrno =   36 : File name too longerrno =   37 : No locks availableerrno =   38 : Function not implementederrno =   39 : Directory not emptyerrno =   40 : Too many levels of symbolic linkserrno =   42 : No message of desired typeerrno =   43 : Identifier removederrno =   44 : Channel number out of rangeerrno =   45 : Level 2 not synchronizederrno =   46 : Level 3 haltederrno =   47 : Level 3 reseterrno =   48 : Link number out of rangeerrno =   49 : Protocol driver not attachederrno =   50 : No CSI structure availableerrno =   51 : Level 2 haltederrno =   52 : Invalid exchangeerrno =   53 : Invalid request descriptorerrno =   54 : Exchange fullerrno =   55 : No anodeerrno =   56 : Invalid request codeerrno =   57 : Invalid sloterrno =   59 : Bad font file formaterrno =   60 : Device not a streamerrno =   61 : No data availableerrno =   62 : Timer expirederrno =   63 : Out of streams resourceserrno =   64 : Machine is not on the networkerrno =   65 : Package not installederrno =   66 : Object is remoteerrno =   67 : Link has been severederrno =   68 : Advertise errorerrno =   69 : Srmount errorerrno =   70 : Communication error on senderrno =   71 : Protocol errorerrno =   72 : Multihop attemptederrno =   73 : RFS specific errorerrno =   74 : Bad messageerrno =   75 : Value too large for defined data typeerrno =   76 : Name not unique on networkerrno =   77 : File descriptor in bad stateerrno =   78 : Remote address changederrno =   79 : Can not access a needed shared libraryerrno =   80 : Accessing a corrupted shared libraryerrno =   81 : .lib section in a.out corruptederrno =   82 : Attempting to link in too many shared librarieserrno =   83 : Cannot exec a shared library directlyerrno =   84 : Invalid or incomplete multibyte or wide charactererrno =   85 : Interrupted system call should be restartederrno =   86 : Streams pipe errorerrno =   87 : Too many userserrno =   88 : Socket operation on non-socketerrno =   89 : Destination address requirederrno =   90 : Message too longerrno =   91 : Protocol wrong type for socketerrno =   92 : Protocol not availableerrno =   93 : Protocol not supportederrno =   94 : Socket type not supportederrno =   95 : Operation not supportederrno =   96 : Protocol family not supportederrno =   97 : Address family not supported by protocolerrno =   98 : Address already in useerrno =   99 : Cannot assign requested addresserrno =  100 : Network is downerrno =  101 : Network is unreachableerrno =  102 : Network dropped connection on reseterrno =  103 : Software caused connection aborterrno =  104 : Connection reset by peererrno =  105 : No buffer space availableerrno =  106 : Transport endpoint is already connectederrno =  107 : Transport endpoint is not connectederrno =  108 : Cannot send after transport endpoint shutdownerrno =  109 : Too many references: cannot spliceerrno =  110 : Connection timed outerrno =  111 : Connection refusederrno =  112 : Host is downerrno =  113 : No route to hosterrno =  114 : Operation already in progresserrno =  115 : Operation now in progresserrno =  116 : Stale file handleerrno =  117 : Structure needs cleaningerrno =  118 : Not a XENIX named type fileerrno =  119 : No XENIX semaphores availableerrno =  120 : Is a named type fileerrno =  121 : Remote I/O errorerrno =  122 : Disk quota exceedederrno =  123 : No medium founderrno =  124 : Wrong medium typeerrno =  125 : Operation cancelederrno =  126 : Required key not availableerrno =  127 : Key has expirederrno =  128 : Key has been revokederrno =  129 : Key was rejected by serviceerrno =  130 : Owner diederrno =  131 : State not recoverableerrno =  132 : Operation not possible due to RF-kill------------------------------------------------------------END*/
# @file build.shecho offPROG_NAME=1_P12clearecho building begin...rm *.og++ -Wall --std=c++98 -g -I. -c ./$PROG_NAME.cpp -o ./$PROG_NAME.og++ -Wall --std=c++98 -g -I. $PROG_NAME.o -lstdc++ -pthread -lpthread -lrt -ldl -o $PROG_NAMEecho building END