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
发表评论
-
评论 (
2012-01-20 12:01 663评论 ( 2011年10月04日 ... -
北京海淀区2011-2012学年度高三年级第一学期期末练习英语
2012-01-20 12:00 952北京海淀区2011-2012学年度高三年级第一学期期末练习英语 ... -
MFC消息处理和消息映射的概念
2012-01-19 16:49 1073MFC消息处理和消息映射的概念 2011年08月25日 ... -
Windows SDK编程(Delphi版) 之 消息处理
2012-01-19 16:49 508Windows SDK编程(Delphi版) ... -
VC消息映射
2012-01-19 16:49 661VC消息映射 2010年08月14 ... -
在.net中基于Windows消息的IPC实现
2012-01-19 16:49 574在.net中基于Windows消息的IPC实现 2011年0 ... -
Delphi7 windows 消息处理机制
2012-01-19 16:49 1058Delphi7 windows 消息处理机 ... -
Linux集群的安装与并行计算
2012-01-17 06:33 623Linux集群的安装与并行 ... -
笔记本ThinkPad E425 1198-3LC
2012-01-17 06:33 1359笔记本ThinkPad E425 1198-3LC 2012 ... -
ITV常见故障错误代码(中兴平台)
2012-01-17 06:33 1232ITV常见故障错误代码(中 ... -
nc.exe高级技巧应用汇总
2012-01-17 06:33 581nc.exe高级技巧应用汇总 2012年01月06日 文 ... -
今夜,笑到无眠……
2012-01-16 05:14 589今夜,笑到无眠…… 2009年08月18日 这个,这个, ... -
快乐女生””
2012-01-16 05:14 687快乐女生”” 2009年07 ... -
华人在美国开美甲店
2012-01-16 05:14 5261华人在美国开美甲店 2011年02月03日 标签:美甲店 ... -
雯琦恋の外国词曲比中国少
2012-01-16 05:14 683雯琦恋の外国词曲比中国少 2010年08月04日 最 ... -
明星真实QQ号码
2012-01-16 05:14 2330明星真实QQ号码 2012年01月04日 点击号码直接进 ...
相关推荐
函数说明: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...