2009-08-18 2 views
11

वहाँ कोई तरीका है जिसके द्वारा मैं यह कर सकते हैं किसी भी निर्देशिका एक सी कार्यक्रम को क्रियान्वित करते हुए करने के लिए परिवर्तन?क्या सी भाषा का उपयोग कर निर्देशिका बदलने का कोई तरीका है?

+0

क्या आप 'सीडी' की तलाश में हैं? या आप वास्तव में सी में एक सक्रिय निर्देशिका सेट करने के लिए एक रास्ता तलाश रहे हैं? – Eric

+2

इसे हथौड़ा कहा जाता है! : पी –

+0

यह प्रश्न अक्सर यूनिक्स जैसी ओएस को झुकाव करने वाले छात्रों के लिए एक अभ्यास के रूप में दिया जाता है। यदि ऐसा है, तो पीटर के बारे में क्या सावधानी बरतें * पर कौन सा प्रक्रिया * प्रभावित हो सकती है और प्रभावित नहीं हो सकती है। – dmckee

उत्तर

11

के रूप में अपने ओएस पर निर्भर करता है वहाँ वर्तमान निर्देशिका को बदलने के लिए अलग-अलग कॉल कर रहे हैं। ये आम तौर पर निष्पादन योग्य चलने वाली प्रक्रिया के वर्तमान डीआईआर को बदल देंगे। प्रक्रिया समाप्त होने के बाद आप उस निर्देशिका में होंगे जिस पर आपने शुरुआत की थी।

+1

धन्यवाद पीटर, तो ऐसा लगता है कि निर्देशिका का भौतिक परिवर्तन नहीं होगा। –

+2

वर्तमान निर्देशिका एक प्रक्रिया की स्थिति का हिस्सा है (जैसे खुली फ़ाइलें, मेमोरी मैप्स, पर्यावरण चर ...)। आम तौर पर एक प्रक्रिया किसी अन्य प्रक्रिया की स्थिति को बदल नहीं सकती है (आमतौर पर, डीबगर और इसी तरह के विशेष विशेषाधिकार हो सकते हैं, लेकिन यह एक और कहानी है)। – AProgrammer

+5

और यही कारण है कि 'सीडी' एक खोल बनाया गया है, एक अलग निष्पादन योग्य नहीं है। –

12

chdir() फ़ंक्शन। अधिक जानकारी के लिए, man chdir का उपयोग करें।

0
#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main(int argc, char* argv[]) 
{ 
    system("C:\\windows\\notepad.exe"); 
    chdir("C:\\windows\\desktop"); 
    return 0; 
} 

प्रति this

+2

क्या आपने इसका परीक्षण किया? – alk

8

chdir() केवल प्रक्रिया की वर्तमान कार्यशील निर्देशिका को बदलता है, लेकिन उस संदर्भ के संदर्भ में जिसमें आप काम कर रहे हैं। आप टर्मिनल में एक कार्यक्रम पर अमल मान लीजिए और अपने वर्तमान निर्देशिका, /home/Documents है तो एक कार्यक्रम को क्रियान्वित करने निम्नलिखित लाइनों

chdir("cd ../Downloads"); 

होने टर्मिनल की कार्यशील निर्देशिका परिवर्तन नहीं होगा पर है, लेकिन केवल प्रक्रिया की है कि बदल जाता है।