Hoe schrijfsysteemoproep in C . te gebruiken

How Use Write System Call C



De systeemaanroep dient als de primaire gateway tussen programma's en de kernel van het Linux-besturingssysteem. Hoewel je vrijwel zeker een systeemaanroep zou moeten hebben tijdens je C-programmeercarrière, of je nu streeft naar uitzonderlijke productiviteit of een bepaalde stijl van functie, de Glibc-repository of andere standaardbibliotheken die in populaire Linux-distributies worden gevonden, zullen volstaan ​​voor de overgrote meerderheid van je vereisten. In deze handleiding zullen we een concept opstellen over de Write System-aanroep in C-taal.

Syntaxis:

#erbij betrekken

ssize_tschrijven(int fd, const void*buf, size_t count);

In deze bovenstaande syntaxis toont de eerste regel de bibliotheek voor systeemaanroepen. Op de tweede regel staat fd voor een bestandsdescriptor, wat inderdaad een getal is dat het geopende bestand van een proces aangeeft. Het sleutelwoord *buf staat voor buffer. Hierin staan ​​alle gegevens. Het volgende is tellen. Het is het aantal bytes dat vanuit de buffer naar een bestandsdescriptor moet worden geschreven.







Installatievereisten:

Om een ​​C-taalcode uit te voeren, moet u eerst enkele pakketten installeren in de Linux-distributie. Als je meer informatie wilt zien over de write system call, moet je het pakket manpages-dev installeren om dit te doen. Om de terminal te openen met de sneltoets Ctrl+Alt+T. Schrijf na het openen het onderstaande apt install-commando gevolgd door het sleutelwoord manpages-dev om manpages te installeren.



$sudogeschiktinstallerenmanpages-dev



Het zal enige tijd duren om manpages te installeren. Wacht tot het is voltooid.





Na de installatie kunt u de aanvullende informatie over de schrijfsysteemaanroep zien via het onderstaande man-commando in de shell.



$Mens 2 schrijven

De output man-pagina voor het schrijfcommando wordt hieronder gegeven. U kunt de informatie erover lezen. Druk op q om de handleiding te verlaten.

Nu is het tijd om het Gcc-pakket in uw Linux-systeem te installeren om in de C-taal te werken. Open daarvoor de shell en schrijf het onderstaande apt install-commando gevolgd door het sleutelwoord gcc.

$sudogeschiktinstalleren gcc

Ondertussen kan het u tijdens de installatie vragen om deze actie van de installatie te bevestigen door op y te drukken om door te gaan en op n om te stoppen. Tik dus op de y-toets en druk op de Enter-toets.

Het wordt binnen enkele minuten in uw systeem geïnstalleerd en de laatste uitvoerregels zijn zoals weergegeven in de onderstaande momentopname.

Voorbeelden:

Laten we enkele voorbeelden geven van een schrijfsysteemaanroep in onze Linux-distributie. Open daarom de opdrachtregelshell en maak daarin een nieuw C-bestand aan met de extensie dot c. U moet de onderstaande nano-opdracht gebruiken om deze snel te maken en te openen. We hebben het een naam gegeven als nieuw.c.

$nanonieuw.c

Het onderstaande venster wordt geopend. Nu moet je de toegevoegde code in dit bestand schrijven. In deze code hebben we eerst een unistd.h-bibliotheek opgenomen. Vervolgens hebben we de hoofdfunctie gemaakt en binnen deze functie hebben we een systeemaanroep schrijven gemaakt. In deze systeemaanroep is de allereerste parameter de bestandsdescriptor. In dit geval vertegenwoordigt geheel getal 1 het scherm van het uitvoerapparaat, en het is vast. Dus onze output wordt op het scherm getoond. De tweede parameter toont de buffergegevens. Je kunt er van alles aan toevoegen. En de laatste parameter toont het telnummer voor de gegevens in de bufferparameter. Omdat we 5 als het telnummer hebben genoemd, worden alleen de eerste 5 bytes van de buffergegevens weergegeven en worden de resterende bytes genegeerd. Sla deze code op met de sneltoets Ctrl+S en sluit dit bestand af met de opdracht Ctrl+X.

#erbij betrekken

Int hoofd()

{Schrijven(1Aqsa Yasin5);}

Probeer nu in de terminal de onderstaande gcc-opdracht om deze nieuw gemaakte code met een bestandsnaam te compileren.

$gccnieuw.c

Laten we deze code eens bekijken met behulp van het standaard a.out-bestand dat tijdens runtime is gemaakt. Probeer dus het onderstaande a.out-commando om de uitvoer van de schrijfsysteemaanroep te controleren. We moeten het gebruiken met ./ om het bestand uit de huidige map te kiezen.

$./a.uit

De uitvoer die u kunt zien, heeft alleen het woord Aqsa weergegeven vanwege het nummer 5.

Laten we onze code een beetje veranderen. We hebben het telnummer gewijzigd in 11 omdat we in totaal 11 bytes in onze buffergegevens Aqsa Yasin hebben. Dus deze keer toont de uitvoer de hele bytes aan stringgegevens Aqsa Yasin. Sla dit bestand op met Ctrl+S en sluit af met de sneltoets Ctrl+X.

Laten we de bijgewerkte code compileren met behulp van de nieuw geïnstalleerde gcc-compiler voor Linux-distributie. Probeer hetzelfde gcc-commando samen met de naam van een bestand als new.c.

$gccnieuw.c

Geef nu de uitvoer van dezelfde code weer met behulp van het vorige a.out-commando zoals hieronder. De uitvoer toont de volledige reeks Aqsa Yasin van de buffer.

$./a.uit

Laten we eens kijken hoe de code werkt als we het telnummer groter nemen dan het totale aantal bytes dat de buffergegevens bevatten. Dus we hebben de telling als 30 gebruikt. Sla het bestand op en sluit het.

Compileer hetzelfde bijgewerkte bestand met de gcc-opdracht zoals hieronder.

$gccnieuw.c

Voer nu het bestand uit met behulp van de opdracht a.out, en de uitvoer zal de buffergegevens tonen, evenals een vuilniswaarde ermee, zoals weergegeven in de snapshot-uitvoer hieronder.$ ./a.out

U kunt ook het totale aantal bytes controleren dat in het bestand is geschreven door de onderstaande code in hetzelfde bestand te gebruiken.

Compileer de code met gcc-instructie.

$gccnieuw.c

De uitvoer toont het totale aantal bytes, inclusief buffergegevens en regeleinde, met behulp van de opdracht a.out.

$./a.uit

Conclusie:

In deze zelfstudie hebben we het concept uitgewerkt om de systeemaanroep schrijven in C te gebruiken. Probeer alle voorbeelden om het idee van de systeemaanroep schrijven te begrijpen met behulp van dit artikel.