1open函数

man man   查看man文档的首页  其中DESCRIPTION部分描述了man文档的每一章的章节内容 第2章System calls为系统调用,即Liunx系统函数。 man 2 open 查看第二章的open函数的详细帮助文件。

open函数用于打开一个已经的文件或者创建一个没有的文件,其详细描述如下:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>   //open函数对应了三个头文件

int open(const char *pathname, int flags);  //打开一个已有的文件

int open(const char *pathname, int flags, mode_t mode); //文件不存在,创建一个新的文件

pathname为打开文件的路径    mode_t为文件权限的类型,如:777  764等     flags参数用于指定打开文件的方式:O_RDONLY(只读)、O_WRONLY(只写)或O_RDWR(读写),这三个参数是互斥的。flags还可以是:O_CLOEXEC, O_CREAT, O_DIRECTORY, O_EXCL, O_NOCTTY, O_NOFOLLOW, O_TRUNC和 O_TTY_INIT。当采用上述第二个open函数(有三个参数)创建一个文件时,flags需指定为O_CREAT(O_RDWR | O_CREAT。mode_t为创建的文件指定一个权限。

open函数的返回值。其返回值为打开或创建文件的文件描述符(无符号整数)。如果返回值为-1(EOF),则说明在打开或创建文件时发生了错误(打开或创建文件失败),在这种情况下(函数调用失败),详细的错误信息保存在全局变量errno中,可以进行查看。

2errno全局变量

errno全局变量,是记录系统的最后一次错误代码(整数值,会被覆盖),为int类型。errno全局变量定义在头文件/usr/include/errno.h中,该文件有: extern int errno; 即是对全局变量的声明。在程序启动时,errno 设置为零(未初始化全局变量),C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。注意:在使用errno变量时,仅需要包含头文件errno.h即可。

errno的代码值(整型值)都进行了宏定义,其定义在两个头文件中:/usr/include/asm-generic/errno-base.h(1~34)和 /usr/include/asm-generic/errno.h(35~133)。如下图所示:

上图中最后面的注释部分表示该代码值所对应的具体是哪一种错误类型。每个errno值对应着以字符串表示的错误类型,当调用“某些”函数出错时,该函数会重新设置 errno 的值。为了查看errno代码值对应的详细错误,需要使用perror函数,其功能如下图:

perror函数在头文件stdio.h中声明,其将errno代表的详细错误类型输出到标准错误流(文件描述符为2),如显示到屏幕上。其参数s所指的字符串是用户自己输入的,以提示用户这是属于哪一个操作的错误。

open函数和errno全局变量相关推荐

  1. c++全局变量怎么定义_C errno全局变量是否是线程安全的

    在使用多线程时,遇到了一个问题:线程例程中如果需要使用errno全局变量,如何保证errno的线程安全性?例如一个简单的线程池代码: for(int i=0;i<THREADNUM;i++){p ...

  2. 在JavaScript函数中定义全局变量

    是否可以在JavaScript函数中定义全局变量? 我想在其他函数中使用trailimage变量(在makeObj函数中声明). <html xmlns="http://www.w3. ...

  3. 【C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )

    文章目录 一.C 项目开发代码规范 一.C 项目开发代码规范 上一篇博客 [C 语言]字符串模型 ( 键值对模型 ) 中 , 完成了字符串的 键值对 查找功能 , 代码不太规范 ; C 项目开发代码规 ...

  4. php在函数内使用全局变量

    在php中,如果在函数内部要使用全局变量的话,要先用global声明该变量, <?php $x=10; $y=20; function test(){ global $x,$y; //如果要在函 ...

  5. python函数 global_Python global全局变量函数详解

    global语句的作用 在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量.此时用global语句就可以变成这个任 ...

  6. python如何在函数中使用全局变量

    如何在函数中创建或使用全局变量? 如果在一个函数中创建全局变量,如何在另一个函数中使用该全局变量?我是否需要将全局变量存储在需要对其进行访问的函数的局部变量中? 解决方案: 您可以在其他函数中使用全局 ...

  7. Python如何在函数内部使用全局变量

    [使用方法] Python在函数内部使用全局变量的一种常用方法如下: 即首先需在函数外部给一个变量赋初值,然后在函数内部用关键字 global 将此变量声明为全局变量.而且,不能有形如 global ...

  8. 自定义函数内可以使用全局变量吗?答案是不可以,需要关键字global

    局部变量是函数内部定义的变量,其作用域是所在的函数.如果函数外还有一个跟局部变量名字一样的变量, 程序会认为它们两个是完全不同的两个变量.当退出函数的时候,其中的局部变量就同时被清除. 全局变量是定义 ...

  9. 函数简介篇——错误处理函数:errno值、perror()、streeor()、streeor_r()

    说明:   本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉.   QQ 群 号:513683159 [相 ...

最新文章

  1. linux shell 读取文件 笔记
  2. join left 大数据_Java并发编程笔记-JDK内置并行执行框架Fork/Join
  3. nginx,excel模板下载
  4. MySQL的配置文件_选项文件_参数文件
  5. CSS 相对|绝对(relative/absolute)定位系列(三)
  6. Spring中Singleton作用域和Prototype作用域
  7. [机器学习]正则化项L1和L2的学习与理解
  8. netty源码解解析(4.0)-5 线程模型-EventExecutorGroup框架
  9. Window 2008 server DNS 无法解析ISA WPAD
  10. equals 跟== 的区别
  11. 平安智慧城市总部智慧政务事业部总监张巍:平安智慧城市大数据应用实践分享
  12. 【亲测有效】帝国cms后台admin帐号密码忘记的处理方法
  13. factorytalk找不到OPC服务器,simatic net 做远程opc服务器问题
  14. 张景明:方剂【方歌】——温里剂
  15. 文本文件与二进制文件区别 r 与 rb 方式 w 与 wb方式(windows)—————— 开开开山怪
  16. 新冠造成的经济崩溃对女性影响最大
  17. 有关信息学竞赛的常见问题
  18. 港口数字化转型不能盲目跟风
  19. Idea 控制台console 不能搜索日志 CTRL F 快捷键无效
  20. 李开复的《AI·未来》是本好书?我不见得

热门文章

  1. 《JavaScript权威指南》学习笔记 第二天 下好一盘大棋
  2. 06链队列_LinkQueue--(栈与队列)
  3. id和instancetype的区别
  4. kinect在openni下也能玩抠出人物换背景
  5. 应用ADO.net得到表
  6. 哈密尔顿算法matlab,复杂制造过程最优哈密尔顿圈算法的MATLAB仿真与分析.doc
  7. linux 无密码登录另一台服务器,ECS Linux服务器ssh免密码登录另外一台服务器的具体设置...
  8. android活动开始,android – 点击谷歌地图标记infoWindow开始活动
  9. html语言dl与ul,HTML中DL、UL、OL用哪个比较好
  10. 《MySQL——查询长时间不返回的三种原因与查询慢的原因》