Open systeemoproep gebruiken in C

How Use Open System Call C



De systeemaanroepen worden in de Linux-distributies gebruikt 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 zullen we de open systeemaanroep in het Linux-systeem bespreken. De systeemaanroep Openen is gebruikt om het bestand dat in het pad is opgegeven snel te openen. Het laat ons weten wat de bestandsdescriptor is van een door de gebruiker gemaakt bestand. We hebben Ubuntu 20.04 gebruikt 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 weergegeven.







Nu zullen we controleren op de open systeemaanroep met behulp van het man-commando zoals hieronder.

$ man2open



De output man-pagina voor de Open systeemaanroep is hieronder getoond. U kunt de aanvullende informatie hierover bekijken. Druk op de q-knop om het te verlaten.

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

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.

$ 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 als volgt een nieuw tekstbestand test.txt met behulp van de eenvoudige aanraakopdracht:

$aanrakentest.txt

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

$kattest.txt

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

$nanonieuw.c

Het onderstaande GNU nano-bestand wordt geopend. U 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 grootte 50. De open systeemaanroep is gebruikt om de inhoud van het bestand test.txt te lezen en terug te sturen 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 het schrijfcommando gebruikt om de inhoud of buffergegevens naar de bestandsdescriptor te schrijven, wat in ons geval nu het uitvoerscherm is. Sla dit bestand op met Ctrl+S en sluit het met het commando Ctrl+X.

#erbij betrekken
#erbij betrekken
#erbij betrekken
#erbij betrekken

inthoofd()
{
intN,fd;
charbuf[vijftig];
fd=open(toets.tekst,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.

$gccnieuw.c

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

$./tot.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

Neem dus dezelfde code met een kleine wijziging erin. 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 op te sporen.

$ gcc nieuw.C

Om de uitvoer van 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 bestandsdoel.

$./tot.uit

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

$ kat doel

Conclusie

In de bovenstaande zelfstudie hebben we u uitgelegd hoe u een open systeemaanroep in C-taal kunt gebruiken met behulp van de gcc-compiler. Met behulp van verschillende voorbeelden die in deze handleiding worden uitgelegd, wordt u geleid om uw gewenste programma te implementeren.