`
zkp664ej
  • 浏览: 13598 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

strerror和erron参数函数的试用(经典)

 
阅读更多

strerror和erron参数函数的试用(经典)
2011年12月06日
  linux下错误的捕获:errno和strerror的使用
  经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。    在程序代码中包含 #include ,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量就可以获得失败原因了。    例如:#include #include #include int main(void){int   fd;extern int errno;if((fd = open("/dev/dsp",O_WRONLY)) Socket operation on non-socket */#define EDESTADDRREQ 89 /* Destination address required */#define EMSGSIZE 90 /* Message too long */#define EPROTOTYPE 91 /* Protocol wrong type for socket */#define ENOPROTOOPT 92 /* Protocol not available */#define EPROTONOSUPPORT 93 /* Protocol not supported */#define ESOCKTNOSUPPORT 94 /* Socket type not supported */#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */#define EPFNOSUPPORT 96 /* Protocol family not supported */#define EAFNOSUPPORT 97 /* Address family not supported by protocol */#define EADDRINUSE 98 /* Address already in use */#define EADDRNOTAVAIL 99 /* Cannot assign requested address */#define ENETDOWN 100 /* Network is down */#define ENETUNREACH 101 /* Network is unreachable */#define ENETRESET 102 /* Network dropped connection because of reset */#define ECONNABORTED 103 /* Software caused connection abort */#define ECONNRESET 104 /* Connection reset by peer */#define ENOBUFS 105 /* No buffer space available */#define EISCONN 106 /* Transport endpoint is already connected */#define ENOTCONN 107 /* Transport endpoint is not connected */#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */#define ETOOMANYREFS 109 /* Too many references: cannot splice */#define ETIMEDOUT 110 /* Connection timed out */#define ECONNREFUSED 111 /* Connection refused */#define EHOSTDOWN 112 /* Host is down */#define EHOSTUNREACH 113 /* No route to host */#define EALREADY 114 /* Operation already in progress */#define EINPROGRESS 115 /* Operation now in progress */#define ESTALE 116 /* Stale NFS file handle */#define EUCLEAN 117 /* Structure needs cleaning */#define ENOTNAM 118 /* Not a XENIX named type file */#define ENAVAIL 119 /* No XENIX semaphores available */#define EISNAM 120 /* Is a named type file */#define EREMOTEIO 121 /* Remote I/O error */#define EDQUOT 122 /* Quota exceeded */#define ENOMEDIUM 123 /* No medium found */#define EMEDIUMTYPE 124 /* Wrong medium type */#endif同时也可以使用strerror()来自己翻译如:#include #include #include int main(void){int   fd;extern int errno;if((fd = open("/dev/dsp",O_WRONLY)) < 0){   printf("errno=%d\n",errno);   char * mesg = strerror(errno);   printf("Mesg:%s\n",mesg);}  exit(0);}dsp设备忙的话将输出如下:errno=16Mesg:Device or resource busy
分享到:
评论

相关推荐

    C语言中返回错误信息的相关函数用法总结

    函数说明:strerror()用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回. 返回值:返回描述错误原因的字符串指针. 范例: /* 显示错误代码0 至9 的错误原因描述 */ #include ...

    -C++参考大全(第四版) (2010 年度畅销榜

    6.9 传统的与现代的函数参数声明 第7章 结构、联合、枚举和用户定义的类型 7.1 结构 7.2 结构数组 7.3 向函数传递结构 7.4 结构指针 7.5 结构中的数组和结构 7.6 位域 7.7 联合 7.8 枚举 7.9 用sizeof来保证可移植...

    图片预览器

    函数中的fill参数是用来控制是否将多余的空间分配给组件,即将组件扩展到盒子的大小(选TRUE),或者多余的空间不变,保留作为盒子和打包组件间的间隔。该参数只有在expand参数取TRUE时才有效。Padding参数是指组件...

    ASP对XML文档中文本的操作

    strError=strError&XMLMorntekDocument;.parseerror.reason&" " strError=strError&XMLMorntekDocument;.parseerror.url&" " strError=strError&XMLMorntekDocument;.parseerror.line&" " strError=...

    字符串函数大全.pdf

    主要介绍 strcpy(),strncpy(), strcat(), strncat(), strcmp(), strncmp(), strchar(), strrchr(), strspn(), strcspn(), strpbrk(), strstr(), strlen(), strerror(), strtok()等。

    linux C 打印错误信息和标准输入输出详细介绍

    Linux 使用strerror 和 perror 函数来打印响应的错误信息 ,这两个函数的标准调用格式说明如下: #include char *strerror(int errnum) #include void perror(const char *msg) strerror函数的返回值是一个指向消息...

    Linux程序设计 第4版.haozip01

    3.9.1 strerror函数 106 3.9.2 perror函数 106 3.10 /proc文件系统 107 3.11 高级主题:fcntl和mmap 110 3.11.1 fcntl系统调用 110 3.11.2 mmap函数 111 3.12 小结 113 第4章 linux环境 114 4.1 程序参数 ...

    Linux程序设计 第4版.haozip02

    3.9.1 strerror函数 106 3.9.2 perror函数 106 3.10 /proc文件系统 107 3.11 高级主题:fcntl和mmap 110 3.11.1 fcntl系统调用 110 3.11.2 mmap函数 111 3.12 小结 113 第4章 linux环境 114 4.1 程序参数 ...

    linux系统编程之线程.zip

    等待线程结束 pthread_join 函数参数--&gt;void ** 【练习】:参数 retval 非空用法。 【pthrd_exit_join.c】 调用该函数的线程将挂起等待,直到id为thread的线程终止。thread线程以不同的方法终止,通过...

    strerror-开源

    这是一个用于将系统错误代码转换为可读文本的小实用程序。 您是否对“错误 71”之类的消息感到厌烦? 此实用程序将帮助您了解它们的含义。

    fdt_strerror.rar_V2

    libfdt - Flat Device Tree manipulation for Linux v2.13.6.

    网络编程函数(练习与实例)

    fprintf(stderr,"Socket error:%s\n\a",strerror(errno)); exit(1); } /* 服务器端填充 sockaddr 结构 */ bzero(&server_addr,sizeof(struct sockaddr_in)); server_addr.sin_family=AF_INET; server_addr.sin_addr...

    Linux /Unix 共享内存

    获取已创建的共享内存时,shmflg不要用IPC_CREAT(只能用创建共享内存时的权限标识,如0640),否则在某些情况下,比如用ipcrm删除共享内存后,用该函数并用IPC_CREAT参数获取一次共享内存(当然,获取失败),则...

    GTK+2.0+中文教程.pdf

    的指针 (即所谓的 "this")作为回调函数的 data 参数。选择哪一种方法仅仅是个人的喜好问题,因为不管用哪一种方法,你都会得到 C++ 和 GTK。它们都不需要特殊的预处理程序,因此你可以同时使用标准 C++ 和 GTK。 本...

    FtpLib upload class

    sprintf(errorMsg, "%s/n", curl_easy_strerror(resCode)); if (resCode == CURLE_LOGIN_DENIED){ return FTP_LOGIN_DENIED; } else if (resCode == CURLE_COULDNT_CONNECT){ return FTP_COULDNT_...

    Windows Sockets网络编程 可能是最清晰版本(Windows Sockets 2规范解释小组负责人亲自执笔。)总共4个包,part1

    12.1.7 perror和strerror不可用 12.1.8 数据库文件操作不可用 12.1.9 bcmp、bcopy和bzero不可用 12.1.10 本地IPC不可用 12.1.11 OOB API不同 12.1.12 setsockoptSO_DEBUG是可选的 12.2 16位Windows的局限性 12.2.1 ...

    Windows Sockets网络编程 总计4个包,part2

    12.1.7 perror和strerror不可用 12.1.8 数据库文件操作不可用 12.1.9 bcmp、bcopy和bzero不可用 12.1.10 本地IPC不可用 12.1.11 OOB API不同 12.1.12 setsockoptSO_DEBUG是可选的 12.2 16位Windows的局限性 12.2.1 ...

    asp 操作xml文件源码

    函数名字:ConnectXml() '入口参数: filename 需要连接或打开的xml文件名 '出口参数: 无 '返回值 :ConnectXml=0,XMLMorntekDocument就是一个成功装载XML文档的对象了。 ' ConnectXml&lt;&gt;0,则打印错误信息...

    c/c++函数库说明(api)html版

    所有的 C / C++ 函数 Constructors (cppstring) Constructors (cppvector) Operators (cppbitset) Operators (cppdeque) Operators (cppstack) Operators (cppstring) Operators (cppvector) abort (stdother...

Global site tag (gtag.js) - Google Analytics