文件IO详解---原子操作之创建文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件IO详解---原子操作之创建文件相关的知识,希望对你有一定的参考价值。
使用open打开文件时,使用 O_CREAT 标志的话,就会在不存在文件的情况下去创建文件。所以说实际应该是有两个操作,一个是判断文件是否存在,另一个就是创建文件;而且这两个操作是作为一个原子操作执行的。如果不是作为一个原子操作执行的,那么就会分解成如下的程序段:
如果不作为一个原子操作执行那么在多进程中可能会出问题,假设两个操作不是作为原子操作执行的,当进程A在判断文件不存在后,便被挂起,进程B得以执行,然后创建了文件且向其中写入了数据,然后进程A被恢复,接着执行creat函数试图创建文件,而此时由于文件已存在,其中的内容会被truncate(截断)为 0 。这就导致了进程B的数据被擦除,出现错误。
以上是关于文件IO详解---原子操作之创建文件的主要内容,如果未能解决你的问题,请参考以下文章