मैं एक सी अनुप्रयोग पर काम कर रहा हूं जिसे बाइनरी के लिए पूर्ण पथनाम खोजने के लिए $ PATH चलना है, और केवल स्वीकार्य निर्भरता glibc है (यानी कोई बाहरी प्रोग्राम नहीं है)। सामान्य स्थिति में, यह सिर्फ कोलन द्वारा विभाजित गेटेंव ("पथ") को जोड़ता है और प्रत्येक निर्देशिका को एक-एक करके जांचता है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मैं सभी संभव कोने के मामलों को कवर करता हूं। मुझे क्या मिलना चाहिए? विशेष रूप से, सापेक्ष पथ हैं, जिनसे शुरू होने वाले पथ $ HOME तक विस्तारित किए गए हैं, या पथ वाले हैं: char अनुमति है?
उत्तर
एक चीज जो मुझे एक बार हैरान करती है वह है कि PATH
में खाली स्ट्रिंग का मतलब वर्तमान निर्देशिका है। अंत में या PATH
की शुरुआत में दो निकटतम कोलन या एक कोलन का अर्थ है कि वर्तमान निर्देशिका शामिल है। उदाहरण के लिए यह man bash में प्रलेखित है।
यह POSIX specification में भी है।
तो
PATH=:/bin
PATH=/bin:
PATH=/bin::/usr/bin
सभी मतलब वर्तमान निर्देशिका है PATH
में मुझे यकीन है कि यह सामान्य रूप में लिनक्स के साथ एक समस्या है नहीं कर रहा हूँ, लेकिन सुनिश्चित करें कि आपके कोड काम करता है अगर PATH
कुछ अजीब है (जैसे, यूटीएफ -8) फैंसी अक्षरों वाली निर्देशिकाओं से निपटने के लिए एन्कोडिंग। मुझे संदेह है कि यह फाइल सिस्टम एन्कोडिंग पर निर्भर हो सकता है।
मुझे कुछ रूसी लड़के की एक बग रिपोर्ट पर काम करना याद है, जिनके उपयोगकर्ता नाम में फैंसी अक्षरों थे (और इसलिए, उनके घर निर्देशिका का नाम जो PATH
में दिखाई दिया था)।
नहीं, एन्कोडिंग 'पथ' के लिए अप्रासंगिक है। यदि कोई प्रोग्राम इसे मानता है, तो यह छोटी है। –
@ आर .: दिलचस्प; क्या आपके पास उस दावे का समर्थन करने के लिए कुछ विनिर्देश हैं? मेरी समझ यह है कि 'पथ' को पार्स करने के लिए, आपको इसे अक्षरों के अनुक्रम के रूप में व्यवहार करना होगा ('बाइट्स 'के अनुक्रम के बजाय), इसलिए आपको एन्कोडिंग से अवगत होना चाहिए। –
एकमात्र चरित्र जो 'पथ' में विशेष है, ':' है, इसलिए आपके दावे की वैधता हो सकती है, केवल वैधता विंडोज-ओरिएंटेड सीजेके एन्कोडिंग के साथ होती है, लेकिन इन्हें आमतौर पर यूनिक्स पर अनुपयोगी माना जाता है। –
यह मामूली है लेकिन मैं इसे जोड़ दूंगा क्योंकि इसका पहले से ही उल्लेख नहीं किया गया है। $ पाथ में पूर्ण और सापेक्ष पथ दोनों शामिल हो सकते हैं। यदि आप प्रत्येक निर्देशिका में chdir (2) ing द्वारा पथ सूची को क्रॉल करते हैं, तो आपको मूल कार्य निर्देशिका (getcwd (3)) और chdir (2) को क्रॉल के प्रत्येक पुनरावृत्ति पर वापस ट्रैक करने की आवश्यकता है।
मौजूदा जवाब इसमें से अधिकांश को कवर किया है, लेकिन यह सवाल के कुछ हिस्सों कि अभी तक उत्तर नहीं था कवर के लायक है:
- $ और ~ $ पथ के मूल्य में विशेष नहीं हैं।
- यदि $ PATH बिल्कुल सेट नहीं है, तो
execvp()
डिफ़ॉल्ट मान का उपयोग करेगा।
- 1. छवि-प्रसंस्करण प्रोजेक्ट के लिए सी # और सी ++ के बीच चयन करते समय मुझे किन कारकों पर विचार करना चाहिए?
- 2. क्या यूनिट परीक्षण का उपयोग करते समय मुझे किन किनारे के मामलों के बारे में सोचना चाहिए?
- 3. क्या हमें यूनिटटेस्ट असेंबली पर FxCop का उपयोग करना चाहिए?
- 4. एंड्रॉइड एप्लिकेशन को डिज़ाइन करते समय मुझे किस स्क्रीन रिज़ॉल्यूशन पर विचार करना चाहिए?
- 5. मुझे कब और क्यों एएसपीएनटी एमवीसी पर विचार करना चाहिए?
- 6. मिनीडिंप के साथ मुझे किन सेटिंग्स का उपयोग करना चाहिए?
- 7. हमें क्यों जारी करना चाहिए?
- 8. हमें x86 पर zone_highmem क्यों चाहिए?
- 9. स्टार्टअप कंपनी को किस डेटाबेस सिस्टम पर विचार करना चाहिए?
- 10. मुझे लाइब्रेरी हेडर बनाने पर विचार कब करना चाहिए?
- 11. विंडोज विकास के लिए लिनक्स पर स्विचिंग, बुरा विचार?
- 12. हमें FSharpFunc.Adapt का उपयोग कब करना चाहिए?
- 13. छवियों पर गोलाकार कोने
- 14. लिनक्स पर चलते समय सी प्रोग्राम निष्क्रिय समय में क्या करना चाहिए?
- 15. हमें कक्षा का उपयोग कब करना चाहिए और जब हमें
- 16. हमें EntityManagerFactory को कब बंद करना चाहिए?
- 17. मेरी प्राथमिक कुंजी के लिए डेटा प्रकार चुनते समय मुझे क्या विचार करना चाहिए?
- 18. हमें अन्य ओआरएम पर nHibernate कब चुनना चाहिए?
- 19. मॉड्यूल या प्लगइन्स के आधार पर सिस्टम विकसित करते समय मुझे कैसे शुरू करना चाहिए?
- 20. मुझे विंडोज विस्टा पीसी पर लिनक्स कैसे स्थापित करना चाहिए?
- 21. कार्य पर समय अनुमानित करना
- 22. सत्र कार्यान्वयन चुनते समय मुझे क्या विचार करना चाहिए?
- 23. क्या हमें बिज़टॉक/ईएसबी पेश करना चाहिए?
- 24. मुझे मेमोरी डेटाबेस में उपयोग करने पर विचार करना चाहिए और इसके लिए क्या समस्या है?
- 25. एंटीटी फ्रेमवर्क पर विचार
- 26. बटन पर क्लिक करते समय नई विंडो खोलनी चाहिए?
- 27. क्या मुझे हेरोोक पर मेमकेचे का उपयोग करते समय बीकर के 'session.lock_dir` को कॉन्फ़िगर करना चाहिए?
- 28. लाइन कोने पॉइंट्स पर अंगूठे अंक
- 29. क्या हमें उपयोगकर्ता कहानियों में व्यक्तित्व का उपयोग करना चाहिए?
- 30. एसओ की तरह ऑनलाइन समुदाय प्रतिनिधि प्रणाली को डिजाइन करते समय क्या विचार करना चाहिए?
+1 'कौन सा' के लिए स्रोत कोड को जांचने के बाद, ऐसा लगता है कि यह एकमात्र कोने का मामला है। 'कौन सा पहला चेक करता है कि एक पूर्ण पथ दिया गया था और फ़ाइल निष्पादन योग्य है। फिर यह पथ के प्रत्येक घटक को प्रीपेड करेगा और फिर से जांच करेगा, मौजूदा निर्देशिका के साथ एक खाली पथ घटक को बदल देगा। –
spec के बाद, 'कौन सा, और कुछ सामान्य मानक गोले के कार्यान्वयन को एक अच्छा अच्छा परिप्रेक्ष्य देना चाहिए। – Novelocrat