2013-10-20 80 views
3

我在讀關於flock。示例中有以下行:
flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
此調用是阻止調用權限?所以如果鎖已經佔用了呼叫塊。
我假設,如果調用返回鎖被授予。那麼die何時會發生?什麼時候阻塞呼叫羣失敗?

回答

6

flock是同名系統調用的包裝。 $!由系統設置。所以請查閱系統的文檔以獲得答案。

在我的系統,按照man 2 flock

  • EBADFfd不是一個打開的文件描述符。

  • EINTR:在等待獲取鎖定時,通過傳遞處理程序捕獲的信號來中斷通話;見信號(7)。

  • EINVALoperation無效。

  • ENOLCK:內核運行內存不足以分配鎖定記錄。

  • EWOULDBLOCK:文件被鎖定,並且LOCK_NB標誌被選中。