perror()函数的运用(详解)

1、作用:
打印系统错误信息

2、原型

#include <stdio.h>
void perror(const char *s);
#include <errno.h>

3、代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
        int fd;
        fd=open("./file", O_RDWR);//打开文件file,读写方式
		if(fd < 0){
			printf("open failure\n");
			perror("why");//打印失败的原因
		}
        close(fd);
        return 0;
}

运行结果:
//我的目录下是没有文件file的

open failure
why: No such file or directory

4、描述
(1)例程perror()在标准错误输出上生成一条消息,描述在调用系统或库函数时遇到的最后一个错误。首先(如果s不是NULL并且*s不是NULL字节(’\0’))将输出参数字符串s,后跟一个冒号和一个空白。然后是消息和新一行。
(2)最常用的是,参数字符串应该包括导致错误的函数的名称。错误号来自外部变量errno,该变量在发生错误时设置,但在成功调用时不清除。
(3)可以使用errno索引的全局错误列表sys_errlist[]获取不换行的错误消息。表中提供的最大消息数是sys_nerr 1。当直接访问这个列表时要小心,因为新的错误值可能没有被添sys_errlist[]。
(4)当系统调用失败时,它通常返回1,并将变量errno设置为描述出错原因的值。(这些值可以在<errno.h>中找到。)许多库函数也是这样做的。函数perror()将错误代码转换为人类可读的形式。注意,在成功的库调用之后,errno是未定义的:这个调用很可能更改这个变量,即使它成功了,例如,因为它在内部使用了其他失败的库函数。因此,如果失败的调用之后没有立即调用perror(),则应该保存errno的值。

上一篇:Git报错解决:fatal: unable to access 'https://github.com/.......': OpenSSL SSL_read: Connection


下一篇:TLPI读书笔记第3章