免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1726 | 回复: 0

5--出错处理(UNIX) [复制链接]

论坛徽章:
0
发表于 2007-04-12 09:41 |显示全部楼层
   当UNIX函数出错时,往常返回一个负值,而且整型变量errno通常设置为具有特定信息的一个值。例如,open函数如成功执行则返回一个非负文件描述符,如出错则返回-1。在open出错时,有大约15种不同的errno值(文件不存在,许可权问题等)。某些函数并不返回负值而是使用另一种约定。例如,返回一个指向对象的指针的大多数函数,在出错时,将返回一个null指针。
   文件中定义了变量errno以及可以赋与它的各种常数。这些常数都以E开头,另外,UNIX手册第2部分的第1页, intro(2) 列出了所有这些出错常数。例如,若errno等于常数EACCES,这表示产生了权限问题(例如,没有打开所要求文件的权限)。POSIX定义errno为:extern int errno;POSIX.1中errno的定义较C标准中的定义更为苛刻。C标准允许errno是一个宏,它扩充成可修改的整型左值(lvalue) (例如返回一个指向出错数的指针的函数)。
   对于errno应当知道两条规则。
   第一条规则是:如果没有出错,则其值不会被一个例程清除。因此,仅当函数的返回值指明出错时,才检验其值。
   第二条是:任一函数都不会将errno值设置为0,在中定义的所有常数都不为0。
C标准定义了两个函数,它们帮助打印出错信息。
#include
char *strerror(int errnum) ;
返回:指向消息字符串的指针
     fprintf(stderr,"EACCES:%s\n",strerror(EACCES));
     errno=ENOENT;
     perror(argv[0]);
此函数将errnum(它通常就是errno值) 映射为一个出错信息字符串,并且返回此字符串的指针。
perror函数在标准出错上产生一条出错消息(基于errno的当前值),然后返回。
#include
void perror(const char* msg) ;
它首先输出由msg指向的字符串,然后是一个冒号,一个空格,然后是对应于errno值的出错信息,然后是一个新行符。
则我们就能分清三个程序中的哪一个产生了一条特定的出错消息。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34065/showart_276200.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP