L'extrait de verrouillage "standard" que j'ai vu va quelque chose comme ...
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
Est-il sûr (les tests semblent le dire) d'utiliser exec
à ce stade? Le sous-processus conservera-t-il le verrou?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
Je me souviens vaguement que les processus exécutés conservent des descripteurs de fichiers ouverts et puisque flock utilise des descripteurs de fichiers, cela devrait fonctionner. Mais je ne trouve aucune documentation qui rend cela définitif et clair.
Pour mémoire, ceci est spécifique à Linux.