1、作用

linux一切皆文件,那么如何打开文件,靠的就是open函数。打开和创建文件,对于文件来说存在文件则打开,不存在则创建;对于设备,可以打开相应设备(串口,SPI,I2C等)。

2、函数原型

//包含头文件
#include <fcntl.h>
int open(const char *pathname, int oflag, ... );
返回值:成功则返回文件描述符,否则返回-1
  • 第一个参数pathname :打开/创建文件的具体路径名,如"/home/pro/my.txt" , "/dev/ttyS0"
  • 第二个参数oflag :open file flag,用于指定打开/创建模式
  • 第三个参数(...):仅当创建新文件时才使用,用于指定文件的访问权限位(access permission bits)

3、模式

  • O_RDONLY      只读模式
  • O_WRONLY     只写模式
  • O_RDWR         读写模式

其他常量FLAG:

  • O_APPEND      末尾追加,每次写操作都写入文件的末尾
  • O_CREAT         创建,如果指定文件不存在,则创建这个文件
  • O_EXCL            是否存在,如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
  • O_TRUNC         如果文件存在,并且以只写/读写方式打开,则清空文件全部内容
  • O_NOCTTY       如果路径名指向终端设备,不要把这个设备用作控制终端。
  • O_NONBLOCK  如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式

用于同步输入输出的FLAG:

  • O_DSYNC       等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。
  • O_RSYNC       read 等待所有写入同一区域的写操作完成后再进行
  • O_SYNC          等待物理 I/O 结束后再 write,包括更新文件属性的 I/O

Linux open函数使用方法记录相关推荐

  1. Linux 修改mac 地址方法记录

    Linux 修改MAC 记录: sudo ifconfig eth0 hw ether 70B3D5106F90 转载于:https://www.cnblogs.com/chenfulin5/p/67 ...

  2. linux sysinfo函数使用方法--获取内存大小

    http://hi.baidu.com/%C0%CB%C2%FE%B5%C4%D0%A1%D0%AB%D7%D3/blog/item/1a3fef35202d4344251f1430.html Lin ...

  3. linux deamon函数使用方法说明

    转自http://blog.chinaunix.net/uid-20196318-id-94985.html 其实,linux提供了daemon函数用于创建守护进程 #include int daem ...

  4. linux获取当前内存函数,linux sysinfo函数使用方法--获取内存大小

    http://hi.baidu.com/%C0%CB%C2%FE%B5%C4%D0%A1%D0%AB%D7%D3/blog/item/1a3fef35202d4344251f1430.html Lin ...

  5. linux clock函数使用方法

    C语言中求程序执行的时间可以使用clock()函数,_CRTIMP clock_t __cdecl __MINGW_NOTHROW clock (void);(可以把它直接视为clock_t cloc ...

  6. linux打印函数名,linux kernel 打印函数指针对应的函数名方法

    linux kernel 打印函数指针对应的函数名方法 内核中函数指针用的很多,在debug 的时候能直接打印出一个函数指针对应的函数就会很方便. 打印裸指针(raw pointer)用 %p,%p除 ...

  7. OpenCV函数应用:基于二值图像的三种孔洞填充方法记录(附python,C++代码)

    系列文章目录 函数系列: OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形 ...

  8. Linux内核多线程实现方法 —— kthread_create函数

          Linux内核多线程实现方法 -- kthread_create函数 内核经常需要在后台执行一些操作,这种任务就可以通过内核线程(kernle thread)完成独立运行在内核空间的标准进 ...

  9. linux环境变量配置的方法,Linux环境变量配置方法

    Linux上环境变量配置分为设置永久变量和临时变量两种.环境变量设置方法同时要考虑环境Shell类型,不同类型的SHELL设置临时变量方法和设置永久变量对应的配置文件不同.Linux环境变量本身配置过 ...

最新文章

  1. 2020十大热门机器学习项目
  2. iphone怎么分屏_问答 | Mac 应用商店中无法”获取“软件怎么办?
  3. sqlalchemy安装以及使用_防火阀的安装以及使用特点详细介绍
  4. 每天学习一点点(2010年二月)
  5. python数据库连接代码_python 连接各类主流数据库的实例代码
  6. 不同数据库模式下DATE类型的行为解析
  7. php mysqli result,PHP mysqli_free_result()与mysqli_fetch_array()函数详解
  8. 笔记本系统恢复连载之十:系统恢复并不难
  9. gVerify:前端验证码插件
  10. python爬虫毕业论文大纲参考模板_毕业论文大纲参考模板
  11. 【操作系统】 2.2 调度概念以及调度算法
  12. 计算机图形学必读的10本书
  13. 怎么在安全模式里找计算机用户,安全模式怎么解除
  14. 超市进销存管理系统(C#+SQL Server实现)C#窗体应用、数据库应用,生成可执行安装包程序
  15. Java设计原则——依赖倒转原则
  16. Django计算机毕业设计餐饮管理系统(程序+LW)Python
  17. python项目实战:实现王者荣耀敏感词汇过滤器
  18. IOS 获取农历节日 节气
  19. springboot连接数据库用户名密码加密
  20. linux多线程编程--学习笔迹4

热门文章

  1. Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)...
  2. imageset matlab,如何以imageSet或imageDataStore的形式向MATLAB中的BagOfFeatures()函數提供輸入?...
  3. mysql8.0主从配置,MySQL 8.0主从服务器(Master-Slave)配置
  4. mysql 永真_sql注入
  5. mysql emoji表情_让MySQL支持Emoji表情 mysql 5.6
  6. linux网卡名称乱编,小斗CentOS7.x网卡名称错乱、及网卡启动失败。
  7. servlet与MySQL商品管理系统_servlet和mysql实现宿舍管理系统
  8. Mac pycharm flask 用内网ip 运行 web
  9. 2019年最流行的10个前端框架
  10. screen 断开 screen -r 不能进入断开的会话