El fragmento de bloqueo "estándar" que he visto se parece a ...
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
¿Es seguro (las pruebas parecen decirlo) para usar exec
en ese punto? ¿El subproceso retendrá la cerradura?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
Recuerdo vagamente que los procesos ejecutados conservan los descriptores de archivos abiertos y, dado que flock usa descriptores de archivos, debería funcionar. Pero no puedo encontrar ninguna documentación que lo haga definitivo y claro.
Para el registro, esto es específico de Linux.