何时阻止调用flock会失败?

Cra*_*lus 3 linux perl locking file flock

我在读关于羊群的文章.这个例子有这一行:
flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
这个电话是阻塞电话吗?因此,如果已经锁定了呼叫块.
我假设如果调用返回锁定被授予.那么什么时候die会发生?

ike*_*ami 7

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

在我的系统上,按照man 2 flock,

  • EBADF:fd不是一个打开的文件描述符.

  • EINTR:在等待获取锁定时,通过传递处理程序捕获的信号来中断呼叫; 见信号(7).

  • EINVAL:operation无效.

  • ENOLCK:内核耗尽内存以分配锁记录.

  • EWOULDBLOCK:文件已锁定且LOCK_NB已选中标志.