Systemopkald

Hvad er et systemopkald i Linux, og hvordan fungerer det med eksempler

Hvad er et systemopkald i Linux, og hvordan fungerer det med eksempler

Et systemopkald er en funktion, der gør det muligt for en proces at kommunikere med Linux-kernen. Det er bare en programmatisk måde for et computerprogram at bestille en facilitet fra operativsystemets kerne. Systemopkald udsætter operativsystemets ressourcer for brugerprogrammer via en API (Application Programming Interface). Systemopkald kan kun få adgang til kernerammen. Systemopkald er nødvendige for alle de tjenester, der har brug for ressourcer.

Linux-kernen er proprietær software, der indlæser og fungerer på enheden i det mindst mulige stadium. Dets opgave er at organisere alt, hvad der sker på maskinen, fra tastaturet, diskdrev og netværkshændelser til at give tidsskiver til samtidig udførelse af forskellige programmer. Adskillelsen af ​​software og hardware skaber en sikker boble, der forbedrer beskyttelse og pålidelighed. Uprivilegerede applikationer er ikke i stand til at nå et andet programs lager, og hvis en mislykkes, suspenderer kernen processen, så den ikke beskadiger hele systemet.

Wafer Thin Wrapper:

Linux-systemopkaldene gengives ikke eksplicit til kernen i visse programmer. Næsten alle programmerne bruger det grundlæggende C-bibliotek og tilbyder en let, men vigtig indpakning over Linux-systemopkaldene. Depotet leverer derefter det ledsagende Linux-maskineopkald efter at have sikret sig, at funktionsparametrene oversættes til de rigtige processorregistre. Hver gang indpakningen modtager data fra systemopkaldet, analyserer den det og bidrager det tydeligt til programmet. Enhver maskine-interaktiv drift i et program konverteres i sidste ende til et systemopkald. Så lad os se på nogle af dem. Der er en lang liste over Linux-systemopkald, som vi kan bruge i vores Linux-system. Her er listen over nogle almindelige og mest brugte Linux-systemopkald.

Lad os diskutere nogle af Linux-systemopkald ved hjælp af C-sproget i vores artikel for at få hands-on med det.

Åbn systemopkald:

Vi kan bruge "Åbn" systemopkald i vores Linux-distribution til hurtigt at åbne dokumentet, som vi vil specificere i vores C-sprogkode. Start kommandoterminalen først. Du kan bruge genvejen "Ctrl + Alt + T". Antag at du har en tekstfil “test.txt ”i hjemmekataloget, og den indeholder noget indhold i den. Så i starten skal du oprette et nyt C-filnavn "nyt.c ”i terminalen via nano-editor. Prøv derfor den enkle nano-instruktion nedenfor.

$ nano nyt.c

Nu er Nano-editoren lanceret. Indtast nedenstående kode i den. Vi har to filbeskrivelser i koden. Begge filer kan åbnes ved hjælp af det åbne systemopkald. Den første deskriptor indeholder et læst opkald, og det andet indeholder skrivefunktionen. Det første åbne opkald åbner tekstfilen “test.txt ”og gemmer dets indhold i filbeskrivelsen“ fd ”. Det andet åbne systemopkald opretter en fil med navnet “target”. Dokumentet "target" er blevet tilbagebetalt til en "fd1" -filbeskrivelse. Skriveinstruktionen bruges til at transkribe byte af data i bufferen. Tryk på "Ctrl + S" for at gemme koden, og tryk på genvejstasten "Ctrl + X" for at afslutte filen.

Kør gcc-kompileringsinstruktionen for at kompilere denne C-kode.

$ gcc nyt.c

Lad os udføre koden ved hjælp af det enkle “a.ud ”forespørgsel i skallen som følger:

$ ./en.ud

Outputdataene er sendt til filen "target". Lad os kontrollere "target" -filen ved hjælp af "cat" -forespørgslen. Udgangsskærmen viser de 20 tegndata i "target" -filen.

$ kat mål

Exec-systemopkald:

Exec-systemopkaldet kastes for at køre en fil, der i øjeblikket behandles. Den tidligere eksekverbare fil erstattes, og den aktuelle fil betjenes, hver gang exec kaldes. Ved at bruge et exec-systemopkald kan vi antage, at dette overskriver det gamle dokument eller det gamle program i sløjfen med et nyt. Ny software bruges til at tilsidesætte hele processens materiale. Dokumentet, hvis titel er angivet i erklæringen, når der påberåbes exec (), erstattes af sektionen brugerinformation, der kører exec () systemopkald (). Så åbn kommandoterminalen, og opret en ny C-fil ved hjælp af nano-editoren som følger:

$ nano eksp.c

Redaktøren er åbnet nu. Skriv hele nedenstående C-sprogkode i den. Der er tre hovedbiblioteker inkluderet i den. Derefter er hovedfunktionen blevet instantieret. Udskriftserklæringen har vist strengdata og proces-id for filen “exp.c ”. Funktionen getpid () er blevet brugt til dette formål. Så har vi et karaktertypearray med nogle værdier i det. Exec-systemopkaldet er blevet brugt til at tage filnavnet og en linje over array som et argument. Nu er filen “hej.c ”behandles. Derefter kommer endnu en udskriftserklæring så langt, men den vil aldrig blive udført. Tryk på "Ctrl + S" for at gemme denne fil. Tryk på "Ctrl + X" for at afslutte.

Nu er det tid til at oprette en anden c-fil, “hej.c ”ved hjælp af nano-editoren. Brug nedenstående forespørgsel i skallen til at gøre det.

$ nano hej.c

Skriv nedenstående kode i den. Denne kode indeholder to udskriftsudsagn i hovedfunktionen. Den første udskriver kun en streng, der er angivet i den, og den anden udskriver strengen, mens man henter proces-id'et for den aktuelt anvendte fil, som er "hej.c ”.

Lad os kompilere begge filer efter hinanden ved hjælp af gcc.

$ gcc -o exp exp.c

$ gcc -o hej hej.c

Når vi udfører eksp.c-fil, udsender den den første udskriftserklæring fra exp.c-fil og begge udskrivningslinjer fra hej.c-fil.

$ ./ eksp

Konklusion:

Vi har uddybet hele konceptet med Linux-systemopkald, og hvordan de kan bruges i dit Linux-system. Vi har brugt Ubuntu 20.04 under implementeringen af ​​dette koncept.

Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...
Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...
Sådan udvikler du et spil på Linux
For et årti siden ville ikke mange Linux-brugere forudsige, at deres foretrukne operativsystem en dag ville være en populær spilplatform til kommercie...