在系统调用中open(),如果使用打开O_CREAT | O_EXCL,系统调用将确保仅在文件不存在时才创建该文件。系统调用保证原子性。有没有类似的方法可以通过bash脚本以原子方式创建文件?
open()
O_CREAT | O_EXCL
更新:我发现了两种不同的原子方式
100%纯bash解决方案:
set -o noclobber { > file ; } &> /dev/null
file如果不存在名为的文件,则此命令将创建一个名为的文件file。如果有一个名为的文件file,则什么也不做(但返回一个非零的返回码)。
file
优点touch:
touch
缺点:
noclobber
我猜这种解决方案确实是使用进行open系统调用的bash对应方式O_CREAT | O_EXCL。
open