क्यूएनएक्स (न्यूट्रीनो 6.5.0) केश के खुले स्रोत कार्यान्वयन का उपयोग अपने खोल के रूप में करता है। सिस्टम स्टार्टअप स्क्रिप्ट सहित प्रदान की स्क्रिप्ट, का एक बहुत, उपयोग एक संसाधन प्रबंधक मौजूद है या फाइल सिस्टम में नहीं है कि क्या"test -a file" और "test file -ef फ़ाइल" के बीच अंतर
if ! test /dev/slog -ef /dev/slog; then
# do something
fi
जाँच करने के लिए इस तरह के रूप निर्माण करती है। मैंने खोज की है और केवल बहुत ही स्प्रे स्पष्टीकरण मिल सकता है कि -ef
यह देखने के लिए जांच करता है कि दो पैरामीटर वास्तव में एक ही फाइल हैं या नहीं। चूंकि निर्दिष्ट फ़ाइल नाम वही है, यह जांचने के लिए कि फ़ाइल मौजूद है, बस यह कम हो जाती है।
मैंने test -a
और test -e
के व्यवहार की जांच की है (दोनों मेरे द्वारा पढ़े गए विभिन्न दस्तावेज़ों के अनुसार किसी भी प्रकार की फ़ाइल के फ़ाइल अस्तित्व की जांच करने लगते हैं) और वे भी काम करते हैं।
-ef
और -a
/-e
के बीच किए गए चेक में कोई अंतर है? -ef
फ़ाइल के अस्तित्व में दौड़ की स्थिति के खिलाफ सुरक्षा के लिए किसी तरह का प्रयास कर रहा है?
की टिप्पणियों से भी सच है, ऐसा लगता है कि यह जांच कर सकता है कि फ़ाइल दो अलग-अलग स्टेट() कॉल के लिए मौजूद है। क्या/dev प्रविष्टि को ड्राइवर/प्रबंधक द्वारा हटा दिया जाता है (उदा।, शट डाउन होने के बाद) केवल तभी जब कोई इसके अस्तित्व की जांच करता है? – jhfrontz
@jhfrontz: मुझे पूरी तरह से यकीन नहीं है कि आपका क्या मतलब है लेकिन (उदाहरण के रूप में)/dev/slog छद्म डिवाइस केवल ड्राइवर को मारने पर हटा दिया जाता है जो आम तौर पर कॉल के मध्य में 'test' के लिए नहीं होता है यह प्रारंभिक सिस्टम स्टार्टअप स्क्रिप्ट का हिस्सा है।/Dev/slog के सामान्य मामले में एक फ़ाइल फ़ाइल/कंसोल/मेमोरी पर लॉग इन करने के लिए डिवाइस को लिख सकती है, और जब यह एक अलग फ़ाइल नाम के साथ समाप्त हो सकती है, तो डिवाइस/dev में प्रकट डिवाइस पहले जैसा ही होना चाहिए/dev/slog को लिखें। – tinman
मैं अनुमान लगा रहा हूं कि डिवाइस के स्टेटस के कुछ दुष्प्रभाव हैं (उदाहरण के लिए, चालक/प्रबंधक को कुछ प्रकार के हाउसकीपिंग करने के लिए प्रेरित करना) जैसे कि पहली स्टेट() कॉल ('test' से) पूर्ण हो जाती है, फ़ाइल/डिवाइस को ड्राइवर द्वारा हटा दिया गया/प्रतिस्थापित किया गया है - इस प्रकार दूसरी स्थिति() को अलग-अलग जानकारी प्राप्त करने का कारण बनता है, जिससे बदले में 'test' विफल हो जाता है। यह थोड़ी देर के बाद से मैंने क्यूएनएक्स का उपयोग किया है, लेकिन [स्लगर मैन पेज] (http: //www.qnx।कॉम/डेवलपर्स/डॉक्स/6.3.0SP3/न्यूट्रीनो/यूटिलिटीज/एस/स्लोगर.html) सुझाव देते हैं कि/dev/slog (उदा।, इसे अनलिंक करने से लॉग को शुद्ध करने के साथ) से दुष्प्रभाव होते हैं। – jhfrontz