Lo snippet di blocco "standard" che ho visto è simile a ...
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
È sicuro (il test sembra dirlo) da usare exec
a quel punto? Il sottoprocesso manterrà il blocco?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
Ricordo vagamente che i processi exec'd mantengono descrittori di file aperti e poiché flock usa descrittori di file dovrebbe funzionare. Ma non riesco a trovare alcuna documentazione che lo renda definitivo e chiaro.
Per la cronaca, questo è specifico per Linux.