„Standardowy” fragment blokujący, który widziałem, wygląda mniej więcej tak ...
(
flock -n 200 || exit 1;
# do stuff
) 200>program.lock
Czy korzystanie z niego exec
w tym momencie jest bezpieczne (wydaje się, że testy tak mówią) ? Czy podproces zachowa blokadę?
(
flock -n 200 || exit 1;
exec /usr/bin/python vendors-notcoolstuff.py
) 200>program.lock
Niejasno pamiętam, że uruchomione procesy zachowują otwarte deskryptory plików, a ponieważ flock używa deskryptorów plików, powinien działać. Ale nie mogę znaleźć żadnej dokumentacji, która by to była ostateczna i jasna.
Dla przypomnienia, jest to specyficzne dla Linuksa.