1. void perror(const char *s)
函数说明
perror ( )用来将上一个函数发生错误的原因输出到标准错误(stderr),参数s 所指的字符串会先打印出,后面再加上错误原因 字符串。此错误原因依照全局变量 errno 的值来决定要输出的字符串。
2. char *strerror(int errno)
将错误代码转换为字符串错误信息。
errno 在 中定义。
错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。
#defineEPERM1/* Operation not permitted */
#defineENOENT2/* No such file or directory */
#defineESRCH 3/* No such process */
#defineEINTR 4/* Interrupted system call */
#defineEIO 5/* I/O error */
#defineENXIO 6/* No such device or address */
#defineE2BIG 7/* Argument list too long */
#defineENOEXEC 8/* Exec format error */
#defineEBADF 9/* Bad file number */
#defineECHILD10/* No child processes */
#defineEAGAIN11/* Try again */
#defineENOMEM12/* Out of memory */
#defineEACCES13/* Permission denied */
#defineEFAULT14/* Bad address */
#defineENOTBLK15/* Block device required */
#defineEBUSY 16/* Device or resource busy */
#defineEEXIST17/* File exists */
#defineEXDEV 18/* Cross-device link */
#defineENODEV19/* No such device */
#defineENOTDIR20/* Not a directory */
#defineEISDIR21/* Is a directory */
#defineEINVAL22/* Invalid argument */
#defineENFILE23/* File table overflow */
#defineEMFILE24/* Too many open files */
#defineENOTTY25/* Not a typewriter */
#defineETXTBSY26/* Text file busy */
#defineEFBIG 27/* File too large */
#defineENOSPC28/* No space left on device */
#defineESPIPE29/* Illegal seek */
#defineEROFS 30/* Read-only file system */
#defineEMLINK31/* Too many links */
#defineEPIPE 32/* Broken pipe */
#defineEDOM 33/* Math argument out of domain of func */
#defineERANGE34/* Math result not representable */
#defineEDEADLK35/* Resource deadlock would occur */ #defineENAMETOOLONG36/* File name too long */ #defineENOLCK37/* No record locks available */ #defineENOSYS38/* Function not implemented */ #defineENOTEMPTY39/* Directory not empty */ #defineELOOP 40/* Too many symbolic links encountered */ #defineEWOULDBLOCKEAGAIN/* Operation would block */ #defineENOMSG42/* No message of desired type */ #defineEIDRM 43/* Identifier removed */ #defineECHRNG44/* Channel number out of range */ #defineEL2NSYNC45/* Level 2 not synchronized */ #defineEL3HLT46/* Level 3 halted */ #defineEL3RST47/* Level 3 reset */ #defineELNRNG48/* Link number out of range */ #defineEUNATCH49/* Protocol driver not attached */ #defineENOCSI50/* No CSI structure available */ #defineEL2HLT51/* Level 2 halted */ #defineEBADE 52/* Invalid exchange */ #defineEBADR 53/* Invalid request descriptor */ #defineEXFULL54/* Exchange full */ #defineENOANO55/* No anode */ #defineEBADRQC56/* Invalid request code */ #defineEBADSLT57/* Invalid slot */ #defineEDEADLOCKEDEADLK #defineEBFONT59/* Bad font file format */ #defineENOSTR60/* Device not a stream */ #defineENODATA61/* No data available */ #defineETIME 62/* Timer expired */ #defineENOSR 63/* Out of streams resources */ #defineENONET64/* Machine is not on the network */ #defineENOPKG65/* Package not installed */ #defineEREMOTE66/* Object is remote */ #defineENOLINK67/* Link has been severed */ #defineEADV 68/* Advertise error */ #defineESRMNT69/* Srmount error */ #defineECOMM 70/* Communication error on send */ #defineEPROTO71/* Protocol error */ #defineEMULTIHOP72/* Multihop attempted */ #defineEDOTDOT73/* RFS specific error */ #defineEBADMSG74/* Not a data message */ #defineEOVERFLOW75/* Value too large for defined data type */ #defineENOTUNIQ76/* Name not unique on network */ #defineEBADFD77/* File descriptor in bad state */ #defineEREMCHG78/* Remote address changed */ #defineELIBACC79/* Can not access a needed shared library */ #defineELIBBAD80/* Accessing a corrupted shared library */ #defineELIBSCN81/* .lib section in a.out corrupted */ #defineELIBMAX82/* Attempting to link in too many shared libraries */ #defineELIBEXEC83/* Cannot exec a shared library directly */ #defineEILSEQ84/* Illegal byte sequence */ #defineERESTART85/* Interrupted system call should be restarted */ #defineESTRPIPE86/* Streams pipe error */ #defineEUSERS87/* Too many users */ #defineENOTSOCK88/* Socket operation on non-socket */ #defineEDESTADDRREQ89/* Destination address required */ #defineEMSGSIZE90/* Message too long */ #defineEPROTOTYPE91/* Protocol wrong type for socket */ #defineENOPROTOOPT92/* Protocol not available */ #defineEPROTONOSUPPORT93/* Protocol not supported */ #defineESOCKTNOSUPPORT94/* Socket type not supported */ #defineEOPNOTSUPP95/* Operation not supported on transport endpoint */ #defineEPFNOSUPPORT96/* Protocol family not supported */ #defineEAFNOSUPPORT97/* Address family not supported by protocol */ #defineEADDRINUSE98/* Address already in use */ #defineEADDRNOTAVAIL99/* Cannot assign requested address */ #defineENETDOWN100/* Network is down */ #defineENETUNREACH101/* Network is unreachable */ #defineENETRESET102/* Network dropped connection because of reset */ #defineECONNABORTED103/* Software caused connection abort */ #defineECONNRESET104/* Connection reset by peer */ #defineENOBUFS105/* No buffer space available */ #defineEISCONN106/* Transport endpoint is already connected */ #defineENOTCONN107/* Transport endpoint is not connected */ #defineESHUTDOWN108/* Cannot send after transport endpoint shutdown */ #defineETOOMANYREFS109/* Too many references: cannot splice */ #defineETIMEDOUT110/* Connection timed out */ #defineECONNREFUSED111/* Connection refused */ #defineEHOSTDOWN112/* Host is down */ #defineEHOSTUNREACH113/* No route to host */ #defineEALREADY114/* Operation already in progress */ #defineEINPROGRESS115/* Operation now in progress */ #defineESTALE116/* Stale NFS file handle */ #defineEUCLEAN117/* Structure needs cleaning */ #defineENOTNAM118/* Not a XENIX named type file */ #defineENAVAIL119/* No XENIX semaphores available */ #defineEISNAM120/* Is a named type file */ #defineEREMOTEIO121/* Remote I/O error */ #defineEDQUOT122/* Quota exceeded */ #defineENOMEDIUM123/* No medium found */ #defineEMEDIUMTYPE124/* Wrong medium type */ #defineECANCELED125/* Operation Canceled */ #defineENOKEY126/* Required key not available */ #defineEKEYEXPIRED127/* Key has expired */ #defineEKEYREVOKED128/* Key has been revoked */ #defineEKEYREJECTED129/* Key was rejected by service */ /* for robust mutexes */ #defineEOWNERDEAD130/* Owner died */ #defineENOTRECOVERABLE131/* State not recoverable */ #define ERFKILL132/* Operation not possible due to RF-kill */ #define EHWPOISON133/* Memory page has hardware error */