C Programmeren

Open systeemoproep gebruiken in C

Open systeemoproep gebruiken in C

De systeemaanroepen worden gebruikt in de Linux-distributies om een ​​doorgang te bieden binnen het Linux-besturingssysteem en de programma's. Het Linux-besturingssysteem gebruikt de Glibc-bibliotheek om systeemaanroepen erin te ondersteunen tijdens het gebruik van de C-taal. Er zijn ook veel meer manieren om systeemoproepen te gebruiken. In deze artikelgids bespreken we de open systeemaanroep in het Linux-systeem. De systeemaanroep "Open" is gebruikt om het bestand dat in het pad is opgegeven snel te openen. Het laat ons iets weten over de bestandsdescriptor van een door een gebruiker gemaakt bestand. We gebruiken Ubuntu 20.04 om een ​​hands-on "Open" systeemoproep te krijgen.

Bibliotheken installeren

Voor de C-taal moeten enkele aanvullende bibliotheekpakketten worden geïnstalleerd als voorwaarde. Allereerst moet u het pakket manpages-dev installeren om de informatie over systeemaanroepen te controleren. Open de opdrachtregelterminal vanuit het activiteitengebied en voer de onderstaande instructie uit om manpages te installeren:.

$ sudo apt install manpages-dev

De output voor de voltooiing van de installatie is hieronder gegeven:.

Nu zullen we controleren op de open systeemaanroep met behulp van de opdracht "man" zoals hieronder:.

$ man 2 open

De output man-pagina voor de "Open" systeemaanroep is hieronder weergegeven:. U kunt de aanvullende informatie erover zien. Druk op de "q"-knop om het te verlaten.

De bovenstaande syntaxis toont de eerste drie regels met benodigde bibliotheken die moeten worden toegevoegd voor systeemaanroepen. Er zijn drie syntaxis beschikbaar voor de open systeemaanroep. De eerste syntaxis toont de "padnaam", wat de naam is van een bestand dat moet worden geopend. De tweede parameter, "vlaggen", toont de modus van een bestand, bijv.g., lezen of schrijven. De tweede syntaxis kan worden gebruikt als het bestand niet bestaat. De parametermodus wordt gebruikt om de privileges op het bestand te tonen.

Nu is het tijd om de GCC-compiler te installeren voor het debuggen van C-code in de Ubuntu 20.04 Linux-distributie. Voer daarvoor de onderstaande instructie in de shell uit om dit te doen.

$ sudo apt install gcc

Het vereist dat u op "Y" tikt om door te gaan met het installeren van de GCC-compiler, anders drukt u op de "n"-knop om de installatie te sluiten. Dus druk op de "y"-knop en druk op Enter om door te gaan.

De uitvoer voor de voltooiing wordt hieronder weergegeven:.

Voorbeeld 01

Laten we eens kijken naar het zeer eenvoudige voorbeeld van een "Open" systeemaanroep. Open eerst de opdrachtshell en maak een nieuw tekstbestand "test".txt" met behulp van de eenvoudige aanraakopdracht als volgt:

$ aanraaktest.tekst

Voeg er handmatig wat gegevens aan toe. U kunt de gegevens in een bestand zien met behulp van de onderstaande cat-opdracht:.

$ kattentest.tekst

Laten we nu een nieuw C-bestand maken met behulp van een nano-opdracht in de shell, zoals hieronder weergegeven:.

$ nano nieuw.c

Het onderstaande GNU nano-bestand wordt geopend. Je moet de onderstaande C-taalcode erin typen. U kunt zien dat we de benodigde bibliotheekpakketten hebben toegevoegd om de C-code correct uit te voeren. Daarna hebben we de hoofdfunctie gedefinieerd om aan een Open systeemaanroep te werken. We hebben twee integer-variabelen gedeclareerd. De variabele "n" wordt gebruikt om bufferwaarden te tellen en de "fd" wordt gebruikt voor de bestandsdescriptor. We hebben de karaktertype bufferarray gedeclareerd als "buf" met een grootte van 50. De open systeemaanroep is gebruikt om de inhoud van het bestand “test.txt" en stuur het terug naar de bestandsdescriptor. De "O_RDONLY" is gebruikt voor leesdoeleinden. De volgende regel toont de leessysteemaanroep om de 10 bytes uit de buffer te verzamelen en terug te sturen naar het gehele getal n. Ook is de schrijfopdracht gebruikt om de inhoud of buffergegevens naar de bestandsdescriptor te schrijven, wat het uitvoerscherm is. In ons geval op dit moment. Sla dit bestand op met Ctrl+S en sluit het met het commando Ctrl+X.

#include
#include
#include
#include
int hoofd()

int n, fd;
char buf [50];
fd=open(“test.txt”, O_RDONLY);
n=lezen(fd , buf, 10);
schrijven (1 , buf, 10);

Laten we eerst de C-code voor een open systeemaanroep compileren met de onderstaande gcc-opdracht command.

$ gcc nieuw.c

Nu is het tijd om de uitvoer voor de C-code te controleren voor een open systeemaanroep. Laten we de onderstaande a . gebruiken.out commando in de shell. De uitvoer toont de 10 bytes van de inhoud van een bestand "test".tekst".

$ ./een.uit

Laten we een ander voorbeeld nemen om de inhoud van het ene bestand naar een ander bestand te schrijven met behulp van een Open systeemaanroep. Om een ​​nieuw C-bestand te maken met behulp van de nano-opdracht zoals hieronder:.

$ nano nieuw.c

Dus neem dezelfde code met een kleine wijziging erin in. We hebben een andere bestandsdescriptor in de code gedefinieerd als "fd1". Alle code is hetzelfde, behalve één extra regel. De voorlaatste regel van de code heeft de open systeemaanroep gebruikt om een ​​nieuw bestand met de naam "target" te maken met behulp van de O_CREAT en de modus, alleen-schrijven als O_WRONLY. 0642 toont de privileges die aan dit bestand zijn toegewezen. En het bestand is teruggestuurd naar een nieuwe bestandsdescriptor. De volgende regel heeft een opdracht getoond om de bytes aan inhoud in de buffer te schrijven volgens de bestandsdescriptor. Sla het bestand op en sluit het.

Voer de gcc compile-opdracht uit om fouten in het C-taalbestand te debuggen.

$ gcc nieuw.c

Om de uitvoer van de C-code weer te geven, probeert u de a.out instructie in de shell zoals hieronder:. Er is geen uitvoer omdat de uitvoer is omgeleid naar het nieuw gemaakte bestand "doel".

$ ./een.uit

Laten we de gegevens van een bestandsdoel controleren met de opdracht cat cat. De uitvoer laat zien dat het bestand 20 bytes bevat.

$ kat doel

Conclusie

In de bovenstaande tutorial hebben we je uitgelegd om een ​​open systeemaanroep in C-taal te gebruiken met behulp van de gcc-compiler. Met behulp van verschillende voorbeelden die in deze gids worden uitgelegd, leidt dit u ertoe uw gewenste programma te implementeren.

Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...
Beste gameconsole-emulators voor Linux
Dit artikel bevat een lijst van populaire emulatiesoftware voor gameconsoles die beschikbaar is voor Linux. Emulatie is een softwarecompatibiliteitsla...
Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...