【问题标题】:What does it mean to lock file in C under linux lockf, flock and fcntl? [duplicate]linux lockf、flock和fcntl下C语言锁文件是什么意思? [复制]
【发布时间】:2018-05-14 22:57:48
【问题描述】:

我是 C 和 Linux 的新手,想知道在 Linux 中使用 C 函数 lockf、flock 和 fcntl 锁定文件是什么意思?因为我来自 Windows 背景,锁定的文件永远不能被任何其他进程更改,但对于 linux,当我为我的进程锁定文件时,该文件可以被任何其他进程修改,甚至可以被桌面文件浏览器删除!

我使用了“lslock”程序,并且我的文件都使用 Type/POSIX MODE/WRITE START/0 END/0 PATH/my/file/path 锁定

Linux中的锁定文件与Windows上的锁定文件有不同的含义,Windows锁定的文件不可能被任何其他进程更改。

另外,我在互联网上读到 NFS 'linux' 不提供文件锁定,除非确定了一个字节范围,如何做到这一点?

我浏览了这篇文章的例子 https://gavv.github.io/blog/file-locks/

【问题讨论】:

  • Unix系统一般使用advisory locking,这要看大家玩的好不好,选择看文件是否被锁,遵守锁。 Mandatory locking,仲裁器强制锁定,也可以在 Unix 系统上完成,但我相信这不是默认设置,因为与咨询锁定相比,它可能相当慢。
  • 请记住这三个函数可能不能很好地相互配合。此外,根据手册页,flock 的可移植性较差(它不是 POSIX 函数)并且不适用于 Linux 上 NFS 上的文件,因此您可能更喜欢 lockffcntl。有关这三个函数的更多信息,请参阅this excellent answer

标签: c linux posix gnu file-locking


【解决方案1】:

您应该阅读有关flock 的手册页。

https://linux.die.net/man/2/flock

更多关于 linux 文件锁定的信息(事情并不像作者说的那么惨淡):

http://0pointer.de/blog/projects/locking.html

【讨论】:

  • 答案应该不仅仅是引用链接。
猜你喜欢
  • 2014-05-22
  • 1970-01-01
  • 2022-01-08
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 2020-10-30
  • 2015-05-20
相关资源
最近更新 更多