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/