【发布时间】:2015-04-13 17:25:42
【问题描述】:
我读了几个小时,但不明白这两个锁之间的区别是什么。我唯一了解的是fcntl() lock 提供了一种粒度锁,可以锁定特定字节,并且只有fcntl() 支持 NFS 锁定。
据说区别在于它们的语义,当被dup()或fork()复制时它们的行为如何,但我不明白在实践中有什么区别。
我的情况是,我正在写入基于fork() 的服务器中的日志文件,当某事 发生时,每个分叉的进程都在写入同一个文件。为什么要使用flock() 以及为什么要使用fcntl() 锁?
【问题讨论】:
-
为 Linux 找到的上一个问题。有趣的答案也提到了 Posix。 stackoverflow.com/questions/22409780/flock-vs-lockf-on-linux
-
flock()和lockf()是两个不同的东西,lockf()通常包装fcntl(),我在问语义到底是什么(关于关闭和传递的行为)。跨度> -
我链接的答案开始 “flock() 和 lockf() 之间的实际区别在于语义(关于关闭和传递的行为)” 和 @987654333 @ 可以包装
fcntl()也许这个答案是相关的。 -
天气,我从您发布的答案中复制了我上一条评论的结尾。对不起,如果我没有很好地解释自己(英语不是我的母语),我想知道关闭和通过时的行为有什么区别。