错误处理机制perror的详解
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=%d\n",error);//打印error 的值
perror("main open");//打印出错信息
}
printf("fd=%d\n",fd);//打印文件 描述符的值
return 0;
}
解释说明:
这一段代码是用函数open打开一个名为test的文件,open()函数返回一个新的文件描述符,如果出现错误,则返回-1(在出现错误的情况下,errno要被做相应的设置)
我们上面的代码只是判断了open是否发生了错误,至于是什么错误无法判断。因为可以引起上述代码中open函数错误的原因比较多,例如文件test不存在,或者文件test存在,但是没有写的权限。这都会出现错误。那么要怎么样准确的判定是什么引起的open函数处错误的呢?当open函数出错时,不仅仅会返回一个-1,函数设置errno的值。那么errno是什么类型的呢?
是一个int类型的全局变量
#ifndef errno
extern int errno;
#endif
错误处理机制perror的详解相关推荐
- jdbc mysql 自动重连_JDBC实现Mysql自动重连机制的方法详解
JDBC是Java程序连接和访问各种数据库的API,它可以提供Java程序和各种数据库之间的连接服务,下面是爱站技术频道小编为大家带来的JDBC实现Mysql自动重连机制的方法详解. 日志:using ...
- 四叶草剧场服务器维修价格,四叶草剧场不合理报酬机制是什么-不合理报酬机制和收益详解-Appfound...
四叶草剧场不合理报酬机制是什么?不合理报酬的增益效果怎么样?在四叶草剧场手游中,有一种剧照效果是不合理的报酬,会使敌方角色被施加减益效果时还会失去5%最大生命,下面就为大家详细介绍不合理报酬的机制和收 ...
- php7自定义异常处理,基于PHP7错误处理与异常处理方法(详解)
PHP7错误处理 PHP 7 改变了大多数错误的报告方式.不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为 Error 异常抛出. 这种 Error 异常可以像 Exception 异常一 ...
- Android-Binder进程间通讯机制-多图详解
本系列: Android-Binder进程间通讯机制-多图详解 一次Binder通信最大可以传输多大的数据? 关于Binder (AIDL)的 oneway 机制 概述 最近在学习Bin ...
- 暗黑3服务器维护能登录,暗黑3登陆错误原因及解决办法详解
暗黑3登陆错误原因及解决办法详解 2012-10-15 09:06:03来源:游戏下载编辑:评论(0) 暗黑3报错ERROR解决方法,全部暗黑3报错汇总,全部报错汇总解答.小编将玩家遇到的各种暗黑3安 ...
- 页错误 Page Fault /缺页异常 详解
目录 1. 第一部分:如果你看得懂 1.1 页错误定义 1.2 页错误的处理 2. 第二部分:如果你看不懂上面的,请看这里 2.1. 举例子(背景) 2.1.1 进程及页映射 ...
- android Handler机制之ThreadLocal详解
概述 我们在谈Handler机制的时候,其实也就是谈Handler.Message.Looper.MessageQueue之间的关系,对于其工作原理我们不做详解(Handler机制详解). Messa ...
- PHP观察者通知机制,观察者模式-通知详解
观察者模式也叫发布/订阅模式,是软件设计模式中的一种.在这种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察者所提供的方法来实现.此种模式通 ...
- Hadoop框架:HDFS读写机制与API详解
本文源码:GitHub·点这里 || GitEE·点这里 一.读写机制 1.数据写入 客户端访问NameNode请求上传文件: NameNode检查目标文件和目录是否已经存在: NameNode响应客 ...
最新文章
- 计算机应用基础 pdf 陈建军教案,温州市第二职业中等专业学校(温五中) 教学资源 温州市《计算机应用基础》学业水平测试考纲(转发)...
- java线程同步barrier_Java多线程同步工具类之CyclicBarrier
- [CQOI2017] 老C的任务(差分 + 树状数组 / K-D tree)
- 3.15 排列对称串
- Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,
- scala连接mongodb_MongoDB 的用户配置与基于Scala的使用
- python在工作中怎么用_在Python中调用是如何工作的?
- 什么是ipo表,ipo图,hipo图
- Java中实体类名称后缀VO,DTO的含义
- 关于出版《ARKit原生开发入门精粹》(2021-03-24更新)
- java的pdf转永中_永中PDF转Word,你值得拥有!
- 无线基础知识学习(一)
- [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
- 一文读懂nginx charset
- LaTeX常用数学符号表示方法
- 数据挖掘 NO.2 模型效果评估
- 学生逃课问题的系统分析
- HTML语言中Em单位,HTML5中单位em的理解
- oracle dba 连不上,Oracle 10g的DBA无法登录解决方案
- 2022 主站及创作侧年度总结 - 相信未来、期待未来