首页 > 编程知识 正文

perror函数,perror

时间:2023-05-05 08:28:26 阅读:262144 作者:1469

open打开文件失败的原因,Linux系统会去设置errno的值 (整型的全局变量)

perrno会根据errno值(整型的全局变量)打印对应的错误信息

 

其实 errno是一个错误编号,当错误发生时,每一个不同的错误都有一个编号,这个编号的值就会被存储在errno中,perrorh会根据这错误编号判断是什么错误发生了,并且打印对应的错误信息,打印错误信息的函数有perror(),strerror(),printf("%m")等。

 

 打印错误信息

打印错误信息 / perror

void perror(const char *s)//打印系统错误信息

参数:

s: 字符串提示符

输出形式:

输出error值对应的错误信息

字符串显示错误信息 / strerror

函数原型:

char *strerror(int errnum);//将错误码以字符串的信息显示出来

参数:

errnum: 即errno

返回值:

返回错误码字符串信息

 

在讲解liunx错误处理机制之前我们先来看一段代码:

#include<sys/stat.h>

#include<unistd.h>

#include<sys/type.h>

#include<stdio.h>

#include<error.h>

 

int main(void){

int fd=open("test",O_WRONLY);//打开test文件,如果失败,系统会去设置全局变量error的值

if(fd<0){//打开失败

printf("error=%dn",error);//打印error 的值

perror("main open");//打印出错信息

}

printf("fd=%dn",fd);//打印文件 描述符的值

return 0;

}

解释说明:

这一段代码是用函数open打开一个名为test的文件,open()函数返回一个新的文件描述符,如果出现错误,则返回-1(在出现错误的情况下,errno要被做相应的设置)

我们上面的代码只是判断了open是否发生了错误,至于是什么错误无法判断。因为可以引起上述代码中open函数错误的原因比较多,例如文件test不存在,或者文件test存在,但是没有写的权限。这都会出现错误。那么要怎么样准确的判定是什么引起的open函数处错误的呢?当open函数出错时,不仅仅会返回一个-1,函数设置errno的值。那么errno是什么类型的呢?

是一个int类型的全局变量

#ifndef errno

 extern int errno;

 #endif

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。