"Стандартний" фрагмент блокування, який я бачив, має щось на зразок ...
(
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.