वहाँ कोई तरीका है जिसके द्वारा मैं यह कर सकते हैं किसी भी निर्देशिका एक सी कार्यक्रम को क्रियान्वित करते हुए करने के लिए परिवर्तन?क्या सी भाषा का उपयोग कर निर्देशिका बदलने का कोई तरीका है?
उत्तर
के रूप में अपने ओएस पर निर्भर करता है वहाँ वर्तमान निर्देशिका को बदलने के लिए अलग-अलग कॉल कर रहे हैं। ये आम तौर पर निष्पादन योग्य चलने वाली प्रक्रिया के वर्तमान डीआईआर को बदल देंगे। प्रक्रिया समाप्त होने के बाद आप उस निर्देशिका में होंगे जिस पर आपने शुरुआत की थी।
धन्यवाद पीटर, तो ऐसा लगता है कि निर्देशिका का भौतिक परिवर्तन नहीं होगा। –
वर्तमान निर्देशिका एक प्रक्रिया की स्थिति का हिस्सा है (जैसे खुली फ़ाइलें, मेमोरी मैप्स, पर्यावरण चर ...)। आम तौर पर एक प्रक्रिया किसी अन्य प्रक्रिया की स्थिति को बदल नहीं सकती है (आमतौर पर, डीबगर और इसी तरह के विशेष विशेषाधिकार हो सकते हैं, लेकिन यह एक और कहानी है)। – AProgrammer
और यही कारण है कि 'सीडी' एक खोल बनाया गया है, एक अलग निष्पादन योग्य नहीं है। –
chdir()
फ़ंक्शन। अधिक जानकारी के लिए, man chdir
का उपयोग करें।
हां, chdir() फ़ंक्शन।
ठीक है, वर्तमान निर्देशिका को बदलने के लिए POSIX आदेश है:
chdir(const char*path);
chdir()
केवल प्रक्रिया की वर्तमान कार्यशील निर्देशिका को बदलता है, लेकिन उस संदर्भ के संदर्भ में जिसमें आप काम कर रहे हैं। आप टर्मिनल में एक कार्यक्रम पर अमल मान लीजिए और अपने वर्तमान निर्देशिका, /home/Documents
है तो एक कार्यक्रम को क्रियान्वित करने निम्नलिखित लाइनों
chdir("cd ../Downloads");
होने टर्मिनल की कार्यशील निर्देशिका परिवर्तन नहीं होगा पर है, लेकिन केवल प्रक्रिया की है कि बदल जाता है।
क्या आप 'सीडी' की तलाश में हैं? या आप वास्तव में सी में एक सक्रिय निर्देशिका सेट करने के लिए एक रास्ता तलाश रहे हैं? – Eric
इसे हथौड़ा कहा जाता है! : पी –
यह प्रश्न अक्सर यूनिक्स जैसी ओएस को झुकाव करने वाले छात्रों के लिए एक अभ्यास के रूप में दिया जाता है। यदि ऐसा है, तो पीटर के बारे में क्या सावधानी बरतें * पर कौन सा प्रक्रिया * प्रभावित हो सकती है और प्रभावित नहीं हो सकती है। – dmckee