Les systemanrop i C

Les systemanrop i C

En systemanrop er en metode for programvare for å kommunisere med operativsystemet. Når programvare utfører en systemanrop, sender den forespørselen til operativsystemets kjerne. For å lese etter en filbeskrivelse, kan du bruke LES () systemfunksjonen. Hver prosess har sin personlige filbeskrivelsestabell i operativsystemet. Den eneste forskjellen mellom Read () og Writ () er at Read () leser data fra filen referert til av filbeskrivelsen. Lesetiden for filen blir oppdatert etter en vellykket lesning ().

Syntaks

# ssize_t lest (int fd, const void *buf, size_t count);

Filbeskrivelsen er det første argumentet. Bufferen er det andre argumentet. Til slutt spesifiserer det tredje alternativet hvor mange byte du vurderer å lese. Byte er bare volumet av data å kopiere, og bufferen er adressen til minneområdet der data skal skrives ut. Returresultatet representerer mengden data skrevet i byte; Hvis det varierer fra byte, ser det ut til at noe er galt. Hvis verdien er negativ, vil systemanropet avbryte.

Forutsetninger

GCC -kompilatoren er nødvendig for å kompilere koden som inneholder en lest () systemanrop. For å utføre og sette sammen C -språkkode, må vi installere en kompilatorpakke på maskinen vår. Så vi må installere GCC -kompilatoren også. Du kan installere den med den presenterte kommandoen nedenfor i en Linux -terminal, som vist nedenfor. Den vil installere om bare noen få øyeblikk, og du vil bare skrive og kjøre C -koder i filer.

Ved å treffe Enter -tasten, vil GCC -kompilatoren bli installert. Det vil ta noen få øyeblikk før du ber deg si ja eller nei. Hvis du velger ja, vil den begynne å screene utdataene fra GCC -kompilatoren. Bruk instruksjonen nedenfor for å installere GCC på systemet ditt.

$ sudo apt install GCC

Første eksempel på lest () systemanrop i C

La oss begynne med Read () for å få en bedre forståelse av det. Først må du bruke Shells GNU-redaktør for å generere en C-Type-fil. Prøv å kjøre den enkle spørringen nedenfor i terminalen for dette.

$ nano read1.c

Det vil ta litt tid for ovennevnte kommando å åpne, men når den først gjør det, vil du kunne bruke den umiddelbart. Den lanserer Ubuntu 20.04s GNU -redaktør med en gang. GNU -redaktøren vises som vist på bildet som er vedlagt nedenfor. Nå, skriv den viste koden i redaktøren.

Les () systemanropet mottar brukerens innspill fra tastaturet som er filbeskrivelsen som 0 og setter den i bufferen “buff”, som bare er en karaktergruppe. Det kan bare lese opptil 10 byte om gangen. Bare de 10 første bokstavene blir lest, uavhengig av hvor mye brukerinngangene. Til slutt, ved hjelp av skrive () systemanrop, vises dataene på vinduet.

På skjermen skriver den ut de samme 10 byte som fra bufferen fra filbeskrivelsen 1. Du skal nå samle koden vist ovenfor. Vi må bruke GCC -kompilatoren til kodesamlingen. Å kompilere “read1.c ”-fil, kjør GCC -kommandoen nedenfor. Gå tilbake til konsollen og skriv kommandoen:

$ GCC Read1.c

Nå må vi kjøre denne koden ved hjelp av./en.ut -kommando i terminalen som vist nedenfor.

$ ./en.ute

I henhold til programmet vises utgangen i ovennevnte skjermbilde.

Andre eksempel på lest () systemanrop i C

Du kan ikke forutsi hvor mye brukeren vil legge inn som inndata. Som et resultat kan ikke det tredje argumentet til skrive () -systemet brukes til å gi de rette byte. Resultatet kan avvike fra det du forventet. Husk hva som leser () kommer tilbake hvis det lykkes. For å demonstrere dette konseptet, utfører vi dette eksemplet. Bruk nå skallets GNU-redaktør for å generere en C-Type-fil. Prøv å kjøre den enkle spørringen nedenfor i terminalen for dette.

$ nano lest.c

Det vil ta litt tid for ovennevnte kommando å åpne, men når den først gjør det, vil du kunne bruke den umiddelbart. Den lanserer Ubuntu 20.04s GNU -redaktør med en gang. GNU -redaktøren vises som vist på bildet som er vedlagt nedenfor. Nå, skriv den viste koden i redaktøren.

I denne koden bruker vi Nread -variabelen for å holde antall byte som leses av lest () systemanrop i C, og bruker variabelen i skriving () for å vise samme mengde byte på vinduet. Du skal nå samle koden vist ovenfor.

Vi må bruke GCC -kompilatoren til kodesamlingen. For å kompilere “Les.c ”-fil, kjør GCC -kommandoen nedenfor. Gå tilbake til konsollen og skriv kommandoen:

$ GCC LES.c

Når koden er samlet, kjør denne koden ved hjelp av ./en.ut -kommando i terminalen, som vist nedenfor.

$ ./en.ute

I henhold til programmet vises utgangen i ovennevnte skjermbilde.

Konklusjon

For å forstå konseptet med lest () systemanrop i Ubuntu, har vi undersøkt noen få enkle og lineære eksempler i C. Vi har også dekket hvordan du setter opp GCC -kompilatoren for kodesamling. Jeg håper du nå bare kan bruke lest () systemanrop for å bygge koden din på Ubuntu 20.04.