系统调用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
原创粉丝点击