Linux chdir rendszerhívás C nyelven

Linux Chdir Rendszerhivas C Nyelven



Az eszköz jelenlegi munkakönyvtárának módosítása a „CHDIR” módszerrel történik. Különféle körülmények között dönthet úgy, hogy módosítja az eszköz jelenlegi munkamappáját. Vagy egy C-szkriptet szeretne futtatni egy mappából a jelenlegi munkakönyvtár helyett. Következésképpen az adott C kód futtatásához módosítania kell a jelenlegi munkamappáját. Ezenkívül a C kódolási nyelv „getcwd” metódusa használható annak gyors meghatározására, hogy a jelenlegi munkamappa megváltozott-e. Ebben a cikkben a C chdir() függvényét fogjuk használni a munkakönyvtár megváltoztatásához.

01. példa:

Kezdjük a C chdir() függvényének működésével a Linux operációs rendszerben. Ehhez meg kell győződnie arról, hogy a C fordítója már fel van szerelve a végére. A legtöbb esetben a C „gcc” fordítóját használjuk Kali Linux operációs rendszerünkben. A példával való kezdéshez rendelkeznünk kell egy „c” kiterjesztésű C fájllal. A p1.c-nek neveztük el, és megpróbáltuk megnyitni a Linux „nano” szerkesztőjével az alábbiak szerint.







Amikor a fájl megnyílik a szerkesztőben, el kell kezdenie a kódolást benne. C programunkat úgy indítottuk el, hogy hozzáadtuk a C fő fejléckönyvtárait, amelyek minden C programban kötelezőek. Ezért az stdio.h és az unistd.h fejléckönyvtárakat használjuk annak biztosítására, hogy a szabványos bemenet és kimenet folyhasson a programon belül. Az unistd.h fejlécet a C néhány szabványos funkciójának kihasználására használták, amelyek különösen ehhez a példához szükségesek. Most elindítottuk a C main() illesztőprogram-függvényét ebben a kódban, hogy a végrehajtás során automatikusan lefusson. A „path” karakter típusú tömbváltozó 100-as mérettel lett meghatározva, mert csak 100 értéket tárol.



A printf() függvény utasítást arra használták, hogy egyszerűen kinyomtassák ennek a C-fájlnak az aktuális munkakönyvtár-mappáját a „getcwd()” függvény segítségével. Ez a függvény a 100 méretű „path” tömbváltozót használja, hogy megkapja az aktuális munkakönyvtárat, és átadja azt a printf() függvény utasításnak megjelenítésre. Itt az ideje a chdir() függvény használatának. Bármilyen karaktert átadhatunk annak meghatározására, hogy előre akarunk-e haladni a könyvtárban, vagy visszafelé akarunk haladni ugyanabban a könyvtárban.



Tehát megpróbáltuk a „..” karaktereket a chdir() függvény utasításban az aktuális munkakönyvtárból visszafelé, azaz egy szinttel az aktuális munkakönyvtár alá mozogni. Vegye figyelembe, hogy jelenleg a Kali Linux rendszer fő „Linux” munkakönyvtárának projektmappájában dolgozunk. Most a „chdir” függvény használata után a „Linux” könyvtárban vagyunk a „projekt” könyvtár helyett. Most ismét megpróbáltuk a „printf()” függvény utasítást, hogy megjelenítsük az aktuális munkakönyvtárat a „getcwd” függvény használatával. Programunk a return 0 utasítással zárul.





A C program elmentése után le kell fordítanunk a „gcc” fordítóval, amelyet már korábban beállítottunk. Ezzel a gcc-utasítással létrehoztunk egy „p1.out” nevű objektumfájlt ennek a C-fájlnak a –o kapcsolóval, ahogy az alább látható.



Most, amikor az objektumfájlt futtatja a Linux terminálon, először megkapja a program által használt munkakönyvtárat, mielőtt a chdir() függvényt használná. A chdir() függvény használata után az alábbi egy könyvtárba léptünk, és az adott „home” könyvtár jelenik meg.

02. példa:



Ugyanazokat a fejléckönyvtárakat használva elindítottuk ezt a programkódot. Ennek a programnak a main() függvényében az „if” utasítást használtuk, a benne lévő chdir() függvényt használva.

Ez a funkció a „/user!=0” feltétel beállításával ellenőrzi, hogy a „/user” létezik-e a rendszerben vagy sem. Ha a címtár nem létezik az aktuális rendszerben, a hibafüggvény hívása a megfelelő hibaüzenet megjelenítésére szolgál, azaz „a felhasználói címtár nem létezik. Egy másik „if” utasítást használtunk a chdir() függvény használatával. A chdir() függvény itt is ugyanazt a célt szolgálja, mint a fenti if utasításban, ami a könyvtár létezésének ellenőrzésére szolgál, a „/temp”!=0 feltétel használatával. Az egyetlen különbség az, hogy a „/user” helyett új „/temp” könyvtárnevet használunk, amint az az alábbi kódképből látható.







Ha a /temp könyvtár nem létezik a rendszerben, az „if” utasításban használt hibafüggvény „/temp könyvtár nem létezik” hibaüzenetet ad, amint az az alábbi képen látható. Mindkét „if” utasítás használata után ezt a kódot a C return 0 utasításával fejeztük be. Most a programnak vége. A C kódunkat a Ctrl+S billentyűparancs segítségével mentettük a végrehajtás előtt.





Most, hogy a fájlt elmentettük a rendszerünkbe, le kell fordítanunk a C kódot a „gcc” fordítóval, amelyet már felcsatoltunk. Ezzel az utasítással létrehoztuk a „p2.out” objektumfájlt az utasítás –o kapcsolójával.





A létrehozott „p2.out” objektumfájl „./” karakterekkel történő végrehajtása után megtudtuk, hogy a „chdir” elérési útjában említett mindkét könyvtár nem létezik a rendszerben, vagy a shellben megjelenő hiba azt mutatja. azt rendesen.



Következtetés

Ebben a mai cikkben bemutattuk a C chdir() függvényének használatát a Kali Linux operációs rendszerben. A legelső példa azt szemlélteti, hogy a chdir() függvény hogyan használható egy munkakönyvtár megváltoztatására, azaz az egyik könyvtárból a másikba való áthelyezésre. A C utolsó példája bemutatja, hogyan ellenőrizhetjük, hogy a chdir() elérési útjában megadott aktuális munkakönyvtár létezik-e vagy sem.