errno是在errno.h中定义的一个整型变量,
当且仅当库函数执行失败时,errno被设置,
errno中保存错误代码( int型的值 ),具体错误信息可以调用perror()或strerror()输出。
errno 记录系统的最后一次
错误代码

注意:errno是在已经知道出错的情况下,表示出错类型的;最好不要拿它来作为判断是否出错的依据。


正确用法:
1.如果函数本身返回一个指示调用成功与否的值,则先用这个值判断是否失败,如果确定失败,在根据errno判断失败类型。 例:

 

res = func();
if( res == 某个失败值 )
{
   printf("errno = %d\n",errno );
}

 

2.调用函数前先手动设置errno = 0。例:


errno = 0;
func();
//这个时候errno就能说明问题了。
if( 0 == errno )
   printf( "succeed" );
else
   printf( "failed" );


错误用法
func();
if( 0 != errno )
   printf( "something wrong!" );

原因:
error只有在调用失败的时候才会被修改,调用成功的时候不会被修改;
当errno = 0 时,不能确定调用成功,也有可能是前面的代码把errno设置成了0;
当errno < 0 时,不能确定调用失败,也有可能是上次调用失败遗留下来的结果。
Posted on 2013-07-06 19:21 烽火依然 阅读(428) 评论(0)  编辑 收藏 引用 所属分类: c

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理