"स्टैंडर्ड" लॉकिंग स्निपेट जो मैंने देखा है वह कुछ इस तरह है ...
(
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
मुझे याद है कि निष्पादक प्रक्रियाएं खुली फ़ाइल डिस्क्रिप्टर को बनाए रखती हैं और चूंकि झुंड फ़ाइल डिस्क्रिप्टर का उपयोग करता है इसलिए इसे काम करना चाहिए। लेकिन मुझे ऐसा कोई दस्तावेज नहीं मिला, जो इसे निश्चित और स्पष्ट बनाता हो।
रिकॉर्ड के लिए, यह लिनक्स के लिए विशिष्ट है।