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
发表评论
-
史上最强劲之android模拟器命令详解
2012-01-20 02:01 567史上最强劲之android模拟器命令详解 2010年11月2 ... -
android_adb命令
2012-01-20 02:01 615android_adb命令 2010年12月17日 An ... -
Microsoft 数据访问技术总结
2012-01-20 02:01 716Microsoft 数据访问技术总 ... -
使用类共享提高性能
2012-01-20 02:00 843使用类共享提高性能 2010年12月09日 共享类基础结 ... -
CENTOS python 升级
2012-01-19 09:48 644CENTOS python 升级 2011年07月28日 ... -
使用Pydev和eclipse配置python开发环境
2012-01-19 09:48 1005使用Pydev和eclipse配置python开发环境 20 ... -
python相关开发环境搭建介绍【转载】
2012-01-19 09:48 636python相关开发环境搭建介绍【转载】 2011年04月0 ... -
Python + Django + MySQLdb 环境安装配置
2012-01-19 09:48 870Python + Django + MySQLdb 环境安装配 ... -
Python Gossip:指令互动环境
2012-01-19 09:48 935Python Gossip:指令互动环境 2010年09月1 ... -
转:基于Chrome开源提取的界面开发框架开篇
2012-01-17 02:22 604转:基于Chrome开源提取的界面开发框架开篇 2011年1 ... -
win32 console application
2012-01-17 02:22 693win32 console application 2011 ... -
微软将对开发者所提要求进行评估
2012-01-17 02:21 520微软将对开发者所提要求进行评估 2011年12月29日 ... -
VC++串口笔记(一)枚举电脑串口
2012-01-17 02:21 1101VC++串口笔记(一)枚举电脑串口 2012年01月14日 ... -
ROM修改制作工具软件集合
2012-01-17 02:21 757ROM修改制作工具软件集合 2012年01月11日 1. ... -
慢慢研究
2012-01-15 22:00 591慢慢研究 2011年12月24日 ... -
Linux集群的安装与并行计算
2012-01-15 22:00 454Linux集群的安装与并行 ... -
nc.exe高级技巧应用汇总
2012-01-15 22:00 552nc.exe高级技巧应用汇总 2012年01月06日 文 ... -
笔记本ThinkPad E425 1198-3LC
2012-01-15 22:00 933笔记本ThinkPad E425 1198-3LC 2012 ...
相关推荐
函数说明: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...