लक्ष्य का उपयोग करते समय डिवाइस तक विशेष पहुंच सुनिश्चित करने के लिए, एक सीरियल डिवाइस या अन्य लिनक्स डिवाइस तक पहुंच को "लॉक" करना है। यह रोकता है, उदाहरण के लिए, दोनों प्रोग्राम एक ही सीरियल डिवाइस खोलते हैं और डिवाइस से बाइट पढ़ने के लिए "प्रतिस्पर्धा" करते हैं।लिनक्स में धारावाहिक बंदरगाहों और अन्य उपकरणों को लॉक करने का सबसे अच्छा अभ्यास क्या है?
सलाह /var/lock/LCK..ttyS1
जैसे SYSV-style UUCP डिवाइस लॉक फ़ाइलों का उपयोग करने के लिए सलाह दी गई है। Linux Serial HOTWO: Locking Out Others द्वारा इसकी सिफारिश की जाती है। यह Filesystem Heirarchy Standard में भी प्रलेखित है। यह धारावाहिक टर्मिनल प्रोग्राम जैसे gtkterm, picocom द्वारा कार्यान्वित किया जाता है। इसका समर्थन करने के लिए liblockdev
और liblockfile
जैसे पुस्तकालय हैं (हालांकि कार्यान्वयन विवरण इन दो पुस्तकालयों के बीच भिन्न हैं)।
हालांकि, मुझे Debian bug #734086 मिला है, जो लिनक्स पर कहता है, SYSV-style UUCP डिवाइस लॉक को हटा दिया गया है, और flock()
सलाहकार ताले के बजाय इसका उपयोग किया जाना चाहिए।
हालांकि, मुझे इन SYSV-style UUCP डिवाइस ताले के बहिष्कार का वर्णन करने के लिए एक विश्वसनीय दस्तावेज़ स्रोत नहीं मिल रहा है, और flock()
की सिफारिश, डेबियन बग के अलावा ही।
मुझे ioctl(fd, TIOCEXCL)
भी मिला है जिसका उपयोग टर्मिनल को लॉक करने के लिए screen
उपयोगिता द्वारा किया जाता है।
लिनक्स में धारावाहिक बंदरगाहों और अन्य उपकरणों को लॉक करने के लिए आधुनिक "सर्वोत्तम अभ्यास" कौन सा है? हम इसका वर्णन करने वाले अद्यतित दस्तावेज कहां पा सकते हैं?
मुझे लगता है कि इसने "मुख्य रूप से राय-आधारित" होने के कारण एक करीबी वोट आकर्षित किया है। लेकिन, यूयूसीपी लॉक फाइलों या 'झुंड()' (दोनों जिनमें से "सलाहकार" हैं) का उपयोग करके काम करने के लिए सीरियल पोर्ट लॉकिंग के लिए, यह महत्वपूर्ण है कि सभी प्रोग्राम एक ही विधि का उपयोग करें, या फिर लॉकिंग काम नहीं करेगी। जैसे यदि एक प्रोग्राम यूयूसीपी फ़ाइल ताले का उपयोग करता है, और दूसरा 'झुंड() 'का उपयोग करता है, तो लॉकिंग अप्रभावी है और दोनों बंदरगाह खोल सकते हैं। इसलिए लिनक्स समुदाय में सर्वसम्मति प्राप्त करने के लिए यह व्यावहारिक रूप से महत्वपूर्ण सवाल है। –