1. 简介
很多系统函数在错误返回时将错误原因记录在libc
定义的全局变量errno
中,每种错误原因对应一个错误码。
errno
在头文件errno.h
中声明,是一个整型变量,所有错误码都是正整数。
然后我们可以用perror
或strerror
函数将errno
解释成字符串
2. perror
#include <stdio.h>
void perror(const char *s);
实例:
FILE *fp = fopen("text.txt","r+");
if ( !fp )
{
perror("Open text.txt");
}
输出结果:
Open text.txt: No such file or directory
fopen
返回-1并设置errno
为ENOENT
,紧接着perror
函数读取errno
的值,将ENOENT
解释成字符串No such file or directory
并打印,最后打印的结果是Open text.txt: No such file or directory
。
3. strerror
#include <string.h>
char *strerror(int errnum);
//返回值:错误码errnum所对应的字符串
实例:
FILE *fp = fopen("text.txt","r+");
if ( !fp )
{
perror("Open text.txt");
}
if (!fp )
{
printf( "errno = %d, message : %s\n", errno, strerror(errno) );
}
输出:
Open text.txt: No such file or directory
errno = 2, message : No such file or directory
4. Linux 中的errno
errno.00 is: Success
errno.01 is: Operation not permitted
errno.02 is: No such file or directory
errno.03 is: No such process
errno.04 is: Interrupted system call
errno.05 is: Input/output error
errno.06 is: No such device or address
errno.07 is: Argument list too long
errno.08 is: Exec format error
errno.09 is: Bad file descriptor
errno.10 is: No child processes
errno.11 is: Resource temporarily unavailable[资源临时不可用](连续发送数据时候回出此错,加延时)
errno