从here,我得到以下信息......
lock [filenum] [r | w] [hex-start] [hex-len]
此命令取决于支持CIFS UNIX扩展的服务器,如果服务器不支持,则将失败。尝试在给定范围内设置给定类型的POSIX fcntl锁。用于内部Samba测试目的。
但是,我找不到这个命令的例子....
根据我的理解,[filenum]是文件名,[r | w]是读和/或写锁
但我不知道[hex-start]和[hex-len]是什么.....
有人可以帮忙吗?
答案 0 :(得分:1)
lock
是使用fcntl()进行咨询文件锁定的简单实现。 (事实上,几年前,我编写了一个几乎完全相同的命令行实用程序,它在对指定文件进行锁定时执行单个命令或脚本。)
fcntl()
锁定适用于远程文件系统。特别是,Linux上的Samba和NFS服务器确实具备此功能。在NFS上,它通常是配置错误或完全禁用,因此基于硬链接或锁定目录的锁定方案更常见。不幸的是
从技术上讲,fcntl()
锁不是文件锁,而是记录锁:文件中的任何字节范围都可以单独锁定,即使是不同的进程也是如此。最常见的用法是锁定整个文件(通过指定零开始和长度,因此即使附加文件也会应用锁定)。如果您省略lock
和hex-start
参数,hex-length
命令就会执行此操作。
如果确实将hex-start
指定为lock
,则它指的是锁定区域开始的偏移量。如果省略或使用零hex-length
,则锁定将应用于文件的其余部分,即使文件被追加或截断也是如此。如果您还指定了hex-length
,则锁定适用于偏移[hex-start
,hex-start
+ hex-length
)。 hex-
前缀显然是指hexadecimal中指定的值。
锁是建议性的,因为它们不会阻止对文件的任何类型的访问。每个应用程序都需要调用fcntl()
,以获取文件的建议锁定;如果所需的锁与同一文件上的其他锁冲突,则调用将阻止(F_SETLKW
)或失败(F_SETLK
)。
有问题吗?