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 时,不能确定调用失败,也有可能是上次调用失败遗留下来的结果。