我发现样板flock(1)
代码看起来很有希望。现在我想在盲目使用之前了解组件。
似乎这些功能正在使用第三种形式flock
群 [-sxun] [-w 超时] fd
第三种形式在 shell 脚本中很方便,通常使用如下方式:
(
flock -s 200
# ... commands executed under lock ...
) 200>/var/lock/mylockfile
我丢失的部分(来自示例包装函数)是这个符号
eval "exec $LOCKFD>\"$LOCKFILE\""
或从flock
手册页简写
200>/var/lock/mylockfile
这有什么作用?
我注意到后续命令flock
传递的值不同于初始重定向中的值导致flock
抱怨
flock: 50: Bad file descriptor
似乎flock
正在使用文件描述符作为映射来知道要对哪个文件进行操作。但是,为了使其正常工作,这些描述符必须仍然存在并与文件相关联,对吗?
重定向完成并创建锁定文件后,文件是否已关闭,与打开文件关联的文件描述符是否已蒸发?我认为文件描述符只与打开的文件相关联。
这里发生了什么?