linux - 什么时候对 flock 的阻塞调用会失败?

标签 linux perl file locking flock

我正在阅读 flock .该示例有这一行:
flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
这个电话是阻塞电话吗?因此,如果锁已被占用,则调用 block 。
我假设如果调用返回,则锁定被授予。那么 die 会在什么时候发生?

最佳答案

flock 是同名系统调用的包装器。 $! 由系统设置。因此,请查阅系统文档以获得答案。

在我的系统上,根据 man 2 flock

  • EBADF:fd 不是打开的文件描述符。

  • EINTR:在等待获取锁时,调用被处理程序捕获的信号传送中断;见信号(7)。

  • EINVAL:操作无效。

  • ENOLCK:内核内存不足,无法分配锁记录。

  • EWOULDBLOCK:文件被锁定并且选择了 LOCK_NB 标志。

关于linux - 什么时候对 flock 的阻塞调用会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481010/

相关文章:

linux - 去除转义字符的 ASCII 文本(ls 输出重定向)

perl - 如何将 MooseX::Declare 与 Moose 的子类一起使用?

C# - 检查文件名以特定单词结尾

java - 如何从文件中的一行读取单词和整数

linux - chmod : missing operand after a+t

linux - Busybox 环境不显示 LD_LIBRARY_PATH

Perl 用户输入

C# 和网络共享数据库

未找到安卓 adb

perl - 这是如何工作的 : map used with ternary hook operator and ()