我见过的“标准”锁定代码片段类似于...
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
exec
在这一点上使用是否安全(测试似乎如此)?子进程会保留锁吗?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
我隐约记得执行进程保留了打开的文件描述符,并且由于flock使用文件描述符,它应该可以工作。但是我找不到任何可以使之明确和明确的文档。
作为记录,这特定于Linux。