系统调用open()为什么有O_APPEND,O_CREAT选项
来源:互联网 发布:tv霸网络电视 编辑:程序博客网 时间:2024/05/17 05:57
要将内容写到文件的尾端
如果open函数没有使用O_APPEND选项,则要分两步
1.lseek定位到文件的尾端
2.写内容
单进程写文件时是没有问题的,若是两个进程同时执行此操作,可能出现
都定位到文件的尾端,进程a写了内容后,进程b再写,则b会覆盖掉a所写的内容。
而O_APPEND选项则把上述两步合成一个原子操作,即不会出现问题,确保写的内容都是在文件尾端。
要判断文件是否存在,不存在则创建该文件
1.打开文件,如果失败,则表示文件不存在。
2.创建文件
如果两个进程都执行上述操作,则在进程a准备创建文件时,进程b已经创建文件,并写了内容。
则进程a再创建文件时会把进程b所写的内容清空掉。
而O_CREAT则把上述操作合并成原子操作,即不会出现问题。确保文件不存在则创建新文件。
0 0
- 系统调用open()为什么有O_APPEND,O_CREAT选项
- open系统调用的O_CREAT和O_EXCL
- 带着O_CREAT和O_RDWR进入linux系统调用open函数
- open函数O_APPEND的含义
- open函数的O_CREAT与O_EXCL
- O_APPEND
- Open系统调用路径
- open系统调用流程
- open 系统调用
- 系统调用open全过程
- open,close系统调用
- open系统调用流程
- open系统调用
- eCryptfs - open系统调用
- open系统调用
- 系统调用open函数
- open 系统调用分析
- 使用库函数也有系统调用的开销,为什么不直接使用系统调用呢?
- ScriptManager , UpdatePanel ContentPanel 理解
- jdbc新增记录后获取主键的方法
- UVA 10474Where is the Marble?(n在排完序队列的第几个位置)
- JAVA可视化界面开发插件Matisse
- 基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成
- 系统调用open()为什么有O_APPEND,O_CREAT选项
- 基于CXF的WebService实例
- 关于Service深刻了解
- The user specified as a definer ('XXXXX'@'%') does not exist
- 撒的发生的广东省房的所发生的
- 学习小结
- 解决LR无法启动IE以及WIN7/WIN8无法运行场景
- Cocos2d-x 屏幕适配新解
- Hdu4920Matrix multiplication(矩阵乘法)