Sådan bruges skrivesystemopkald i C

How Use Write System Call C



Systemopkaldet fungerer som den primære gateway mellem programmer og Linux -operativsystemets kerne. Selvom du næsten helt sikkert vil skulle have et systemopkald i hele din C -programmeringskarriere, uanset om du stræber efter enestående produktivitet eller en bestemt funktionstilstand, vil Glibc -depotet eller andre standardbiblioteker, der findes i populære Linux -distros, være tilstrækkeligt for langt de fleste af dine krav. I denne vejledning etablerer vi et koncept om skrivesystemopkald på C -sprog.

Syntaks:

#omfatte

størrelse_tskrive(int fd, const void*buf, størrelse_t tæller);

I ovenstående syntaks viser den første linje biblioteket til systemopkald. På den anden linje står fd for en filbeskrivelse, som faktisk er et tal, der angiver en process åbne fil. Nøgleordet *buf står for buffer. Dette indeholder alle data i det. Næste er tælling. Det er antallet af bytes, der skal skrives til en filbeskrivelse fra bufferen.







Installer forudsætninger:

For at køre en C -sprogkode skal du først installere nogle pakker i Linux -distribution. Hvis du vil se yderligere oplysninger om skrivesystemopkaldet, skal du installere pakken manpages-dev for at gøre det. For at åbne terminalen ved hjælp af Ctrl+Alt+T genvejstasten. Efter åbning skal du skrive nedenstående apt install-kommando efterfulgt af søgeordet manpages-dev for at installere manpages.



$sudopassendeinstalleremanpages-dev



Det vil tage noget tid at installere manpages. Vent på, at den er færdig.





Efter installationen kan du se yderligere oplysninger om skrivesystemopkaldet via kommandoen man nedenfor i skallen.



$mand 2 skrive

Outputmandsiden for skrivekommandoen er angivet nedenfor. Du kan læse oplysningerne om det. Tryk på q for at afslutte manualen.

Nu er det tid til at installere Gcc -pakken i dit Linux -system for at arbejde på C -sproget. Til det skal du åbne skallen og skrive nedenstående apt install -kommando efterfulgt af søgeordet gcc.

$sudopassendeinstallere gcc

I mellemtiden under installationen kan det bede dig om at bekræfte denne handling ved at trykke på y for at fortsætte og n for at stoppe den. Så tryk på y -tasten og tryk på Enter -tasten.

Det installeres i dit system inden for nogle minutter, og de sidste linjer med output vil være som vist i nedenstående snapshot.

Eksempler:

Lad os få nogle eksempler på et skrivesystemopkald i vores Linux -distribution. Åbn derfor kommandolinjens shell og opret en ny C-fil i den med dot c-udvidelsen. Du skal bruge nano -kommandoen herunder til hurtigt at oprette og åbne den. Vi har givet det et navn som nyt. C.

$nanony. c

Nedenstående vindue åbnes. Nu skal du skrive den påsatte kode i denne fil. I denne kode har vi inkluderet et unistd.h -bibliotek først. Så har vi oprettet hovedfunktionen, og inden for denne funktion har vi oprettet et skrivesystemopkald. I dette systemopkald er den allerførste parameter filbeskrivelsen. I dette tilfælde repræsenterer heltal 1 outputenhedens skærm, og det er rettet. Så vores output vises på skærmen. Den anden parameter viser bufferdata. Du kan tilføje alt til det. Og den sidste parameter viser tælletallet for de data, der er givet i bufferparameteren. Som vi har nævnt 5 som tælletallet, viser det kun de første 5 bytes af bufferdataene og ignorerer de resterende bytes. Gem denne kode ved hjælp af Ctrl+S genvejstasten, og afslut denne fil ved hjælp af kommandoen Ctrl+X.

#omfatte

Int main()

{Skrive(1Aqsa Yasin5);}

Prøv nu i terminalen nedenstående gcc -kommando for at kompilere denne nyoprettede kode med et filnavn.

$gccny. c

Lad os tjekke denne kode ved at bruge standard a.out -filen, der blev oprettet på løbetid. Så prøv nedenstående a.out -kommando for at kontrollere outputtet af skrivesystemopkaldet. Vi skal bruge den med ./ til at vælge filen fra det aktuelle bibliotek.

$./a. ud

Den output, du kan se, har kun vist ordet Aqsa på grund af tælletallet 5.

Lad os ændre vores kode lidt. Vi har ændret tælletallet til 11, fordi vi har i alt 11 bytes i vores bufferdata Aqsa Yasin. Så denne gang vil output vise hele bytes af strengedata Aqsa Yasin. Gem denne fil ved hjælp af Ctrl+S, og afslut ved hjælp af Ctrl+X genvejstasten.

Lad os kompilere den opdaterede kode ved hjælp af den nyinstallerede gcc -compiler til Linux -distribution. Prøv den samme gcc -kommando sammen med navnet på en fil som new.c.

$gccny. c

Vis nu output fra den samme kode ved hjælp af den tidligere a.out -kommando som nedenfor. Outputtet viser bufferens fulde streng Aqsa Yasin.

$./a. ud

Lad os se, hvordan koden fungerer, når vi tager tælletallet større end det samlede antal bytes, bufferdataene indeholder. Så vi har brugt tællingen som 30. Gem og luk filen.

Kompiler den samme opdaterede fil ved hjælp af gcc -kommandoen som nedenfor.

$gccny. c

Kør nu filen ved hjælp af a.out -kommandoen, og output viser bufferdata samt en vis skraldværdi med den som vist i snapshot -output nedenfor. $ ./A.out

Du kan også kontrollere det samlede antal bytes, der er skrevet i filen, ved at bruge nedenstående kode i den samme fil.

Kompiler koden ved gcc -instruktion.

$gccny. c

Outputtet viser det samlede antal bytes, inklusive bufferdata og linjeskift, ved hjælp af kommandoen a.out.

$./a. ud

Konklusion:

I denne vejledning har vi uddybet konceptet til at bruge skrivesystemopkaldet i C. Prøv alle eksemplerne for at forstå ideen om skrivesystemopkald ved hjælp af denne artikel.