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
发表评论
-
转:构建可扩展的Java EE应用
2012-01-20 00:51 628转:构建可扩展的Java EE ... -
由C++转向C#需要注意的问题 (3)
2012-01-20 00:51 627由C++转向C#需要注意的问题 (3) 2010年06月02 ... -
探索 Gdb7.0 的新特性反向调试 (reverse debug)
2012-01-20 00:51 774探索 Gdb7.0 的新特性反向调试 (reverse deb ... -
为在telnet自己TCP服务器程序的界面上实现shell一样的自动补齐和历史记录的功能。
2012-01-20 00:51 1022为在telnet自己TCP服务器 ... -
java 充当浏览器访问网站
2012-01-20 00:51 843java 充当浏览器访问网站 2010年12月27日 在 ... -
嵌入式Linux的移植的理论问题
2012-01-19 08:40 672嵌入式Linux的移植的理 ... -
记录没见过的词条
2012-01-19 08:39 572记录没见过的词条 2011 ... -
事件管理器――PWM
2012-01-19 08:39 641事件管理器――PWM 2011 ... -
开源工具
2012-01-19 08:39 713开源工具 2011年03月22日 软件集成开发环境(代码 ... -
ARM中B __Main和B Main的区别(好文)
2012-01-19 08:39 670ARM中B __Main和B Main的区别(好文) 201 ... -
利用Java实现网页浏览器(转)
2012-01-17 01:09 992利用Java实现网页浏览器 ... -
Qt for S60第五版植入5230
2012-01-17 01:09 809Qt for S60第五版植入5230 2010年12月02 ... -
案桌系统
2012-01-17 01:09 565案桌系统 2011年02月13日 ... -
安装安卓虚拟机。XP亲测,win7请自行检验。
2012-01-17 01:09 1009安装安卓虚拟机。XP亲测,win7请自行检验。 2011年1 ... -
2----Android手机小白知识全集!! 刚入手
2012-01-17 01:09 7832----Android手机小白知识 ... -
nc.exe高级技巧应用汇总
2012-01-15 19:51 688nc.exe高级技巧应用汇总 2012年01月06日 文 ... -
笔记本ThinkPad E425 1198-3LC
2012-01-15 19:51 1136笔记本ThinkPad E425 1198-3LC 2012 ... -
灯饰英语
2012-01-15 19:51 612灯饰英语 2011年12月02日 ... -
sysytem32下的文件及其作用的文章
2012-01-15 19:51 634sysytem32下的文件及其作用的文章 2011年11月2 ... -
apache mina error dead lock: iofuture.await()-yidianfengfan-iteye技术网站
2012-01-11 12:04 812apache mina error dead lock: io ...
相关推荐
函数说明:strerror()用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回. 返回值:返回描述错误原因的字符串指针. 范例: /* 显示错误代码0 至9 的错误原因描述 */ #include ...
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参数是指组件...
strError=strError&XMLMorntekDocument;.parseerror.reason&" " strError=strError&XMLMorntekDocument;.parseerror.url&" " strError=strError&XMLMorntekDocument;.parseerror.line&" " strError=...
主要介绍 strcpy(),strncpy(), strcat(), strncat(), strcmp(), strncmp(), strchar(), strrchr(), strspn(), strcspn(), strpbrk(), strstr(), strlen(), strerror(), strtok()等。
Linux 使用strerror 和 perror 函数来打印响应的错误信息 ,这两个函数的标准调用格式说明如下: #include char *strerror(int errnum) #include void perror(const char *msg) strerror函数的返回值是一个指向消息...
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 程序参数 ...
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 程序参数 ...
等待线程结束 pthread_join 函数参数-->void ** 【练习】:参数 retval 非空用法。 【pthrd_exit_join.c】 调用该函数的线程将挂起等待,直到id为thread的线程终止。thread线程以不同的方法终止,通过...
这是一个用于将系统错误代码转换为可读文本的小实用程序。 您是否对“错误 71”之类的消息感到厌烦? 此实用程序将帮助您了解它们的含义。
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...
获取已创建的共享内存时,shmflg不要用IPC_CREAT(只能用创建共享内存时的权限标识,如0640),否则在某些情况下,比如用ipcrm删除共享内存后,用该函数并用IPC_CREAT参数获取一次共享内存(当然,获取失败),则...
的指针 (即所谓的 "this")作为回调函数的 data 参数。选择哪一种方法仅仅是个人的喜好问题,因为不管用哪一种方法,你都会得到 C++ 和 GTK。它们都不需要特殊的预处理程序,因此你可以同时使用标准 C++ 和 GTK。 本...
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_...
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 ...
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 ...
函数名字:ConnectXml() '入口参数: filename 需要连接或打开的xml文件名 '出口参数: 无 '返回值 :ConnectXml=0,XMLMorntekDocument就是一个成功装载XML文档的对象了。 ' ConnectXml<>0,则打印错误信息...
所有的 C / C++ 函数 Constructors (cppstring) Constructors (cppvector) Operators (cppbitset) Operators (cppdeque) Operators (cppstack) Operators (cppstring) Operators (cppvector) abort (stdother...