在 bash 下进行锁定的一种简单且看似可靠的方法是:
exec 9>>lockfile
flock 9
然而,众所周知,bash 会将这样的 fd 锁传播到所有分叉的东西,包括执行的程序等。
有什么办法告诉 bash 不要重复 fd 吗?很好的是,锁附加到一个 fd 上,当程序终止时,无论程序如何终止,该锁都会被删除。
我知道我可以做这样的事情:
run_some_prog 9>&-
但这是相当乏味的。
还有更好的解决办法吗?
您可以使用-o
命令行选项flock(1)
(长选项--close
,这可能更适合在脚本中编写以实现自记录性质),以指定在执行命令之前应关闭文件描述符flock(1)
:
-o, --close
Close the file descriptor on which the lock is held
before executing command. This is useful if command
spawns a child process which should not be holding
the lock.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)