"Стандартный" фрагмент блокировки, который я видел, выглядит примерно так ...
(
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
Я смутно помню, что процессы exec'd сохраняют дескрипторы открытых файлов, и поскольку flock использует файловые дескрипторы, он должен работать. Но я не могу найти какую-либо документацию, которая делает это окончательным и ясным.
Для записи, это специфично для Linux.