Slik bruker du Skriv systemanrop i C

How Use Write System Call C



Systemanropet fungerer som hovedporten mellom programmer og Linux -operativsystemkjernen. Selv om du nesten helt sikkert vil trenge et systemanrop gjennom hele C -programmeringskarrieren, enten du sikter mot eksepsjonell produktivitet eller en bestemt funksjonstil, vil Glibc -depotet eller andre standardbiblioteker som finnes i populære Linux -distroer være tilstrekkelig for de aller fleste av dine krav. I denne veiledningen vil vi etablere et konsept om skrivesystemsamtalen på C -språk.

Syntaks:

#inkludere

ssize_tskrive(int fd, const void*buf, størrelse_t teller);

I denne syntaksen ovenfor viser den første linjen biblioteket for systemanrop. På den andre linjen står fd for en filbeskrivelse som faktisk er et tall som spesifiserer en prosess åpen fil. Søkeordet *buf står for buffer. Dette inneholder data i den. Neste er telling. Det er antall byte som skal skrives til en filbeskrivelse fra bufferen.







Installer forutsetninger:

For å kjøre en C -språkkode må du først installere noen pakker i Linux -distribusjon. Hvis du vil se mer informasjon om skrivesystemsamtalen, må du installere pakken manpages-dev for å gjøre det. For å åpne terminalen ved hjelp av Ctrl+Alt+T snarvei. Etter å ha åpnet den, skriver du ned apt install-kommandoen nedenfor etterfulgt av søkeordet manpages-dev for å installere manpages.



$sudopassendeinstalleremanpages-dev



Det vil ta litt tid å installere manpages. Vent til den er fullført.





Etter installasjonen kan du se tilleggsinformasjon om skrivesystemsamtalen via kommandoen nedenfor i skallet.



$Mann 2 skrive

Utdatamannen for skrivekommandoen er gitt nedenfor. Du kan lese informasjonen om det. Trykk på q for å avslutte manualen.

Nå er det på tide å installere Gcc -pakken i Linux -systemet ditt for å fungere på C -språket. For det åpner du skallet og skriver kommandoen apt install nedenfor, etterfulgt av søkeordet gcc.

$sudopassendeinstallere gcc

I mellomtiden kan det under installasjonen be deg om å bekrefte denne installasjonen ved å trykke på y for å fortsette og n for å stoppe den. Så trykk på y -tasten og trykk Enter.

Det vil bli installert i systemet ditt i løpet av noen minutter, og de siste produktlinjene vil være som vist i øyeblikksbildet nedenfor.

Eksempler:

La oss ha noen eksempler på et skrivesystemanrop i vår Linux -distribusjon. Åpne derfor kommandolinjeskallet og opprett en ny C-fil i den med punkt c-utvidelsen. Du må bruke nano -kommandoen nedenfor for raskt å opprette og åpne den. Vi har gitt den et navn som nytt. C.

$nanonytt. c

Vinduet nedenfor åpnes. Nå må du skrive den påsatte koden i denne filen. I denne koden har vi inkludert et unistd.h -bibliotek først. Deretter har vi opprettet hovedfunksjonen, og innenfor denne funksjonen har vi opprettet et skrivesystemanrop. I dette systemanropet er den aller første parameteren filbeskrivelsen. I dette tilfellet representerer heltall 1 utskriftsenhetens skjerm, og det er løst. Så vår produksjon vil bli vist på skjermen. Den andre parameteren viser bufferdata. Du kan legge til alt. Og den siste parameteren viser telletallet for dataene som er gitt i bufferparameteren. Som vi har nevnt 5 som telletall, vil det bare vise de første 5 byte av bufferdata og ignorere byte som er igjen. Lagre denne koden med Ctrl+S -hurtigtasten og avslutt denne filen med Ctrl+X -kommandoen.

#inkludere

Int main()

{Skrive(1Aqsa Yasin5);}

Nå i terminalen, prøv kommandoen gcc nedenfor for å kompilere denne nyopprettede koden med et filnavn.

$gccnytt. c

La oss sjekke ut denne koden ved å bruke standard a.out -filen som ble opprettet ved kjøretid. Så prøv kommandoen a.out nedenfor for å sjekke utgangen fra skrivesystemsamtalen. Vi må bruke den med ./ for å velge filen fra den nåværende katalogen.

$./a. ut

Utgangen du kan se har bare vist ordet Aqsa på grunn av telletallet 5.

La oss endre koden vår litt. Vi har endret telletallet til 11 fordi vi har totalt 11 byte i bufferdataene Aqsa Yasin. Så denne gangen vil utgangen vise hele byte med strengdata Aqsa Yasin. Lagre denne filen med Ctrl+S og avslutt med Ctrl+X -hurtigtasten.

La oss kompilere den oppdaterte koden ved å bruke den nylig installerte gcc -kompilatoren for Linux -distribusjon. Prøv den samme gcc -kommandoen sammen med navnet på en fil som new.c.

$gccnytt. c

Vis nå utgangen av den samme koden ved å bruke den forrige a.out -kommandoen som nedenfor. Utgangen viser bufferen med hele strengen Aqsa Yasin.

$./a. ut

La oss se hvordan koden fungerer når vi tar telletallet større enn det totale antallet byte som bufferdata inneholder. Så, vi har brukt tellingen som 30. Lagre og lukk filen.

Kompiler den samme oppdaterte filen ved hjelp av gcc -kommandoen som nedenfor.

$gccnytt. c

Utfør nå filen ved hjelp av a.out -kommandoen, og utdataene vil vise bufferdataene og litt søppelverdi med den som vist i øyeblikksbildet nedenfor. $ ./A.out

Du kan også sjekke det totale antallet byte som er skrevet inn i filen ved å bruke koden nedenfor i den samme filen.

Kompiler koden etter gcc instruksjon.

$gccnytt. c

Utgangen viser totalt antall byte, inkludert bufferdata og linjeskift, ved hjelp av a.out -kommandoen.

$./a. ut

Konklusjon:

I denne opplæringen har vi utarbeidet konseptet for å bruke skrivesystemsamtalen i C. Prøv alle eksemplene for å forstå ideen om skrivesystemsamtalen ved hjelp av denne artikkelen.