linux中获取错误信息的方式

当linux中的函数内部出错时通常函数会返回-1,并且将错误码保存到全局变量errno中,用来表示错误代码。errno全局变量包含在头文件errno.h文件中。下面给出三种打印错误信息的方法。

perror函数

应用举例如下:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

int main(void)
{
FILE *fp ;
fp = fopen( "/root/noexitfile", "r+" );
if ( NULL == fp )
{
perror("error : ");
}
return 0;
}

输出如下:
Permission denied

strerror函数

strerror函数原型为:char *strerror(int errnum);将参数errnum转换为对应的错误码。
应用举例如下:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

int main(void)
{
FILE *fp ;
fp = fopen( "/root/noexitfile", "r+" );
if ( NULL == fp )
{
printf("%s\n", strerror(errno));
}
return 0;
}

输出如下:
Permission denied

printf中的%m打印

应用举例如下:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

int main(void)
{
FILE *fp ;
fp = fopen( "/root/noexitfile", "r+" );
if ( NULL == fp )
{
printf("%m\n");
}
return 0;
}

输出如下:
Permission denied