如何在 Perl 中锁定 Linux 网络上的共享文件?
我在两台 Linux 机器上安装了 cifs 文件。 我有一个可以修改共享文件的 Perl 脚本。 在这种情况下,我们如何通过网络锁定文件?
I have mounted a cifs file on two Linux machines. I have a Perl script which can modify the shared file. How do we lock the file over network in this scenario?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
看起来我们可以使用 fcntl() 来锁定文件。 我刚刚发现它可以工作:)
此链接可能有用
http://www.cpan.org /scripts/file-handling/flock.using.fcntl.example
感谢您的回复
_Anandan
Looks like we can fcntl() for locking files. I just found its working :)
this link might be useful
http://www.cpan.org/scripts/file-handling/flock.using.fcntl.example
Thanks for your response
_Anandan
如果您尝试通过 NFS 执行此操作,请尝试 File::NFSLock。
If you're trying to do this over NFS, try File::NFSLock.
如果您的文件服务器是 Samba,则另请参阅 smb.conf 手册页:
阻塞锁 (S)
锁定 (S)
If your file server is Samba, then look also at the smb.conf man page:
blocking locks (S)
locking (S)
我在 CPAN 上找不到实现此目的的模块。 包装 libsmbclient 的模块似乎没有实现协议的 OPLOCKing 部分。
在 smbfs根据消息来源,函数
smbfs_smb_lock
似乎可以满足您的需要。要么编写您自己的 XS 包装器模块,要么使用 Inline::C。
I couldn't find a module on CPAN to achieve this. It seems that the modules wrapping libsmbclient do not implement the OPLOCKing portion of the protocol.
In the smbfs sources, the function
smbfs_smb_lock
appears to do what you need.Either write your own XS wrapper module, or use Inline::C.