Linux chdir systeemoproep in C

Linux Chdir Systeemoproep In C



Wijzigingen in de huidige werkdirectory van een apparaat worden gemaakt met behulp van de 'CHDIR'-methode. In verschillende omstandigheden kunt u besluiten de huidige werkmap van uw apparaat te wijzigen. Of u wilt een C-script uitvoeren vanuit een map in plaats van uw huidige werkmap. Om die specifieke C-code uit te voeren, moet u dus uw huidige werkmap wijzigen. Bovendien kan de 'getcwd'-methode van de codeertaal C worden gebruikt om snel te bepalen wanneer de huidige werkmap is gewijzigd. Nu gaan we in dit artikel de functie chdir() van C gebruiken om een ​​werkmap te wijzigen.

Voorbeeld 01:

Laten we beginnen met de werking van de chdir()-functie van C in het Linux-besturingssysteem. Hiervoor moet je er vrij zeker van zijn dat de compiler van C al aan jouw kant is gemount. In de meeste gevallen gebruiken we de 'gcc'-compiler van C in ons Kali Linux-besturingssysteem. Om met dit voorbeeld te beginnen, moeten we een C-bestand hebben met de extensie 'c'. We noemden het p1.c en probeerden het te openen met de 'nano' -editor van Linux, zoals hieronder weergegeven.







Wanneer uw bestand in de editor wordt geopend, moet u erin beginnen te coderen. We zijn ons C-programma gestart door de belangrijkste headerbibliotheken van C toe te voegen die de must-haves zijn in elk C-programma. Daarom worden de headerbibliotheken stdio.h en unistd.h gebruikt om ervoor te zorgen dat de standaardinvoer en -uitvoer binnen het programma kunnen stromen. De header unistd.h is gebruikt om gebruik te maken van enkele standaardfuncties van C die speciaal voor dit voorbeeld nodig zijn. Nu zijn we begonnen met de main() driverfunctie van C in deze code om automatisch uit te voeren bij uitvoering. De array-variabele 'path' van het tekentype is gedefinieerd met een grootte van 100 omdat deze slechts 100 waarden opslaat.



Het functiestatement printf() is gebruikt om eenvoudig de huidige werkmapmap van dit C-bestand af te drukken met behulp van de functie 'getcwd()'. Deze functie gebruikt de arrayvariabele 'path' met een grootte van 100 om de huidige werkdirectory erin te krijgen en deze door te geven aan de functie-instructie printf() voor weergave. Nu is het tijd om de functie chdir() te gebruiken. We kunnen elk soort karakter doorgeven om aan te geven of we vooruit willen gaan in de directory of achteruit willen gaan binnen dezelfde directory.



We hebben dus geprobeerd de '..'-tekens in de functie chdir() te gebruiken om van de huidige werkdirectory in achterwaartse richting te gaan, d.w.z. één niveau onder de huidige werkdirectory. Merk op dat we op dit moment hebben gewerkt in de projectmap van onze hoofd 'Linux' werkdirectory van het Kali Linux-systeem. Nu zijn we in de 'Linux' -directory in plaats van de 'project' -directory na het gebruik van de 'chdir' -functie. Nu hebben we het functiestatement 'printf()' nogmaals geprobeerd om de huidige werkdirectory weer te geven met de functie 'getcwd' erin. Ons programma eindigt met de return 0 statement.





Nadat we dit C-programma hebben opgeslagen, moeten we het compileren met behulp van de 'gcc' -compiler die we al aan onze kant hebben geconfigureerd. Met behulp van deze gcc-instructie hebben we een objectbestand gemaakt van dit C-bestand met de naam 'p1.out' met behulp van de -o-optie zoals hieronder weergegeven.



Als je nu het objectbestand in je Linux-terminal uitvoert, krijg je eerst de werkdirectory die door het programma wordt gebruikt voordat de functie chdir() wordt gebruikt. Na het gebruik van de chdir()-functie, zijn we verhuisd naar de ene map hieronder en die specifieke map 'home' wordt weergegeven.

Voorbeeld 02:



Met behulp van dezelfde header-bibliotheken zijn we deze programmacode gestart. Binnen de functie main() van dit programma hebben we de instructie 'if' gebruikt met de functie chdir() erin.

Deze functie controleert of de '/gebruiker' in het systeem bestaat of niet door de voorwaarde '/gebruiker!=0' in te stellen. Als de directory niet bestaat in het huidige systeem, wordt de perror-functie-aanroep gebruikt om de respectievelijke foutmelding weer te geven, d.w.z. 'gebruikersdirectory bestaat niet. We hebben een andere 'if' -instructie gebruikt met de functie chdir() erin. Het doel van het gebruik van de chdir()-functie hier is ook hetzelfde als in het bovenstaande if-statement, dat is om te controleren of de directory al dan niet bestaat met behulp van de '/temp'!=0-voorwaarde. Het enige verschil is het gebruik van een nieuwe mapnaam '/temp' in plaats van '/user', zoals je kunt zien in de code-afbeelding hieronder.







Als de /temp-map niet in het systeem bestaat, zou de perrfunctie die in de 'if'-instructie wordt gebruikt, een foutmelding '/temp-map bestaat niet' geven, zoals weergegeven in de onderstaande afbeelding. Na het gebruik van beide 'if' -statements, hebben we deze code beëindigd met het C's return 0-statement. Nu is het programma afgelopen. We hebben onze C-code opgeslagen met behulp van de sneltoets Ctrl + S voordat deze werd uitgevoerd.





Nu het bestand in uw systeem is opgeslagen, moeten we de C-code compileren met de 'gcc' -compiler die we al aan onze kant hebben aangekoppeld. Met behulp van deze instructie hebben we het objectbestand 'p2.out' gemaakt met behulp van de -o-optie in de instructie.





Na het uitvoeren van het gemaakte objectbestand 'p2.out' met de './'-tekens, hebben we geleerd dat beide mappen die worden genoemd in het pad van 'chdir' niet in het systeem bestaan ​​of dat de fout die in de shell wordt weergegeven, heeft aangetoond het goed.



Conclusie

In dit artikel van vandaag hebben we het gebruik van de chdir()-functie van C in het Kali Linux-besturingssysteem gedemonstreerd. Het allereerste voorbeeld illustreert hoe de functie chdir() kan worden gebruikt om een ​​werkdirectory te wijzigen, d.w.z. van de ene directory naar de andere te gaan. Het laatste voorbeeld van C laat zien hoe we kunnen controleren of de huidige werkdirectory die is opgegeven in het pad van chdir() bestaat of niet.