我见过的“标准”锁定片段类似于......
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
Run Code Online (Sandbox Code Playgroud)
那时使用是否安全(测试似乎是这样说的)exec
?子进程会保留锁吗?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
Run Code Online (Sandbox Code Playgroud)
我依稀记得 exec 的进程保留打开的文件描述符,并且由于 flock 使用文件描述符,它应该可以工作。但我找不到任何文件来明确和清楚地说明这一点。
作为记录,这是特定于 Linux 的。