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的详解相关推荐

  1. jdbc mysql 自动重连_JDBC实现Mysql自动重连机制的方法详解

    JDBC是Java程序连接和访问各种数据库的API,它可以提供Java程序和各种数据库之间的连接服务,下面是爱站技术频道小编为大家带来的JDBC实现Mysql自动重连机制的方法详解. 日志:using ...

  2. 四叶草剧场服务器维修价格,四叶草剧场不合理报酬机制是什么-不合理报酬机制和收益详解-Appfound...

    四叶草剧场不合理报酬机制是什么?不合理报酬的增益效果怎么样?在四叶草剧场手游中,有一种剧照效果是不合理的报酬,会使敌方角色被施加减益效果时还会失去5%最大生命,下面就为大家详细介绍不合理报酬的机制和收 ...

  3. php7自定义异常处理,基于PHP7错误处理与异常处理方法(详解)

    PHP7错误处理 PHP 7 改变了大多数错误的报告方式.不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为 Error 异常抛出. 这种 Error 异常可以像 Exception 异常一 ...

  4. Android-Binder进程间通讯机制-多图详解

    本系列: Android-Binder进程间通讯机制-多图详解 一次Binder通信最大可以传输多大的数据?​​​​​​​ 关于Binder (AIDL)的 oneway 机制 概述 最近在学习Bin ...

  5. 暗黑3服务器维护能登录,暗黑3登陆错误原因及解决办法详解

    暗黑3登陆错误原因及解决办法详解 2012-10-15 09:06:03来源:游戏下载编辑:评论(0) 暗黑3报错ERROR解决方法,全部暗黑3报错汇总,全部报错汇总解答.小编将玩家遇到的各种暗黑3安 ...

  6. 页错误 Page Fault /缺页异常 详解

    ​​​​​目录 ​​​​​​ 1. 第一部分:如果你看得懂 1.1 页错误定义 1.2 页错误的处理 2. 第二部分:如果你看不懂上面的,请看这里 2.1. 举例子(背景) 2.1.1 进程及页映射 ...

  7. android Handler机制之ThreadLocal详解

    概述 我们在谈Handler机制的时候,其实也就是谈Handler.Message.Looper.MessageQueue之间的关系,对于其工作原理我们不做详解(Handler机制详解). Messa ...

  8. PHP观察者通知机制,观察者模式-通知详解

    观察者模式也叫发布/订阅模式,是软件设计模式中的一种.在这种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察者所提供的方法来实现.此种模式通 ...

  9. Hadoop框架:HDFS读写机制与API详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.读写机制 1.数据写入 客户端访问NameNode请求上传文件: NameNode检查目标文件和目录是否已经存在: NameNode响应客 ...

最新文章

  1. 计算机应用基础 pdf 陈建军教案,温州市第二职业中等专业学校(温五中) 教学资源 温州市《计算机应用基础》学业水平测试考纲(转发)...
  2. java线程同步barrier_Java多线程同步工具类之CyclicBarrier
  3. [CQOI2017] 老C的任务(差分 + 树状数组 / K-D tree)
  4. 3.15 排列对称串
  5. Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,
  6. scala连接mongodb_MongoDB 的用户配置与基于Scala的使用
  7. python在工作中怎么用_在Python中调用是如何工作的?
  8. 什么是ipo表,ipo图,hipo图
  9. Java中实体类名称后缀VO,DTO的含义
  10. 关于出版《ARKit原生开发入门精粹》(2021-03-24更新)
  11. java的pdf转永中_永中PDF转Word,你值得拥有!
  12. 无线基础知识学习(一)
  13. [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
  14. 一文读懂nginx charset
  15. LaTeX常用数学符号表示方法
  16. 数据挖掘 NO.2 模型效果评估
  17. 学生逃课问题的系统分析
  18. HTML语言中Em单位,HTML5中单位em的理解
  19. oracle dba 连不上,Oracle 10g的DBA无法登录解决方案
  20. 2022 主站及创作侧年度总结 - 相信未来、期待未来

热门文章

  1. 求问R语言 分层抽样 合并两个数据框为什么出现了空集
  2. 香港银行开户资料和香港银行开户多少钱和渣打银行开户流程
  3. Easy-UI入门案例
  4. Jzoj5450【NOIP2017提高A组冲刺11.4】Neutral
  5. ZigBee——在CC2530的ZStack中添加定时任务
  6. QT 创建文件,文件夹
  7. MAC地址、IP地址以及ARP协议
  8. 在linux4.15 移植设备树到JZ2440
  9. android camera 对焦大小,Android camera2对焦设置
  10. 调试MPU6050遇到的问题(初始化失败)