如果可能有多个进程正在写入同一个输出文件,那么将输出文件本身植绒而不是单独的锁定文件是否安全?
例如这样安全吗?
outputFile=output.dat
exec 200>>"$outputFile"
flock -e 200
grep -i error "$1" >> "$outputFile"
flock -u 200
我在flock中找到的所有示例都使用单独的锁定文件。
例如
outputFile=output.dat
lockFile=/var/tmp/output.dat
exec 200>"$lockFile"
flock -e 200
grep -i error "$1" >> "$outputFile"
flock -u 200
答案 0 :(得分:1)
是的,在给定的特定(狭窄)使用模式内,您的建议是安全的。
O_TRUNC
打开锁定文件。rm
一样,完全删除数据文件-确保所有新创建的版本在持有锁的同时都获得不同的inode。