Perl中的“ open”功能是否自动检查文件是否被锁定并等待其被解锁?如果是这样,它要等待多长时间,或者该如何控制该时间段?

我有5个将数据附加到同一文件的分支进程。每个派生进程基本上都会打开文件,然后将其聚集。然后,它将附加其数据并关闭文件处理程序以解锁文件,以便其他派生进程可以使用它。

一切都按预期工作,但是如果其中一个分叉的过程花费太长时间来完成其任务,恐怕open命令可能会超时。

最佳答案

flock仅阻止使用flock获取锁;它不会阻止文件被打开,读取或修改。

没有flock标志的LOCK_NB将阻塞,直到获得锁定或被信号中断为止。

带有flock标志的LOCK_NB将立即返回。


如果flock能够获得锁,它将返回true。
如果flock无法获取锁,它将返回false,并设置errno


$!{EINTR}表示操作已被信号中断。
$!{EWOULDBLOCK}表示需要等待,但已指定LOCK_NB

关于perl - Perl打开和聚集超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42914538/

10-10 12:33