Vad är ett systemanrop i Linux och hur fungerar det med exempel

What Is System Call Linux



Ett systemanrop är en funktion som gör att en process kan kommunicera med Linux -kärnan. Det är bara ett programmatiskt sätt för ett datorprogram att beställa en anläggning från operativsystemets kärna. Systemanrop exponerar operativsystemets resurser för användarprogram via ett API (Application Programming Interface). Systemanrop kan bara komma åt kärnramen. Systemanrop behövs för alla tjänster som behöver resurser.

Linux -kärnan är egenutvecklad programvara som laddar och fungerar på enheten i det minst potentiella skedet. Dess jobb är att organisera allt som händer på maskinen, från tangentbordet, hårddisken och nätverkshändelser till att ge tidskivor för samtidig körning av olika program. Separationen av programvara och hårdvara skapar en säker bubbla som förbättrar skydd och tillförlitlighet. Oprivilegerade program kan inte nå andra programmets lagring, och om en misslyckas avbryter kärnan processen så att den inte skadar hela systemet.







Wafer Thin Wrapper:

Linux -systemsamtalen återges inte uttryckligen till kärnan i vissa program. Nästan alla program använder det grundläggande C -biblioteket och erbjuder ett lätt men viktigt omslag över Linux -systemsamtalen. Förvaret tillhandahåller sedan det medföljande Linux -maskinsamtalet efter att ha säkerställt att funktionsparametrarna översätts till rätt processorregister. Närhelst omslaget mottar data från systemanropet analyserar det det och bidrar klart till programmet. Varje maskininteraktiv operation i ett program omvandlas slutligen till ett systemanrop. Så, låt oss titta på några av dem. Det finns en lång lista med Linux -systemsamtal som vi kan använda i vårt Linux -system. Här är listan över några vanliga och mest använda Linux -systemsamtal.



  • Öppen
  • Stänga
  • Exec
  • Skriva
  • Läsa
  • Lseek
  • Välj

Låt oss diskutera några av Linux-systemsamtalen som använder C-språket i vår artikel för att få praktisk information om det.



Öppna systemsamtal:

Vi kan använda Open system -anropet i vår Linux -distribution för att snabbt öppna dokumentet, vilket vi kommer att specificera i vår kod för C -språk. Starta kommandoterminalen först. Du kan använda genvägen Ctrl+Alt+T. Anta att du har en textfil test.txt i hemkatalogen, och den innehåller en del innehåll i den. Så i början måste du skapa ett nytt C -filnamn new.c i terminalen via nano -editor. Prova därför den enkla nano -instruktionen nedan.





$nanony. c

Nu har Nano -redaktören lanserats. Skriv koden som visas nedan. Vi har två filbeskrivare i koden. Båda filerna kan öppnas med det öppna systemsamtalet. Den första beskrivningen innehåller ett läsanrop och den andra innehåller skrivfunktionen. Det första öppna samtalet är att öppna textfilen test.txt och spara dess innehåll i filbeskrivning fd. Det andra öppna systemsamtalet skapar en fil som heter mål. Dokumentmålet har återbetalats till en fd1 -filbeskrivare. Skrivinstruktionen används för att transkribera databyte i bufferten. Tryck på Ctrl+S för att spara koden och tryck på genvägstangenten Ctrl+X för att avsluta filen.



Kör gcc -kompileringsinstruktionen för att kompilera denna C -kod.

$gccny. c

Låt oss köra koden med den enkla a.out -frågan i skalet enligt följande:

$./a.out

Utdata har överförts till filmålet. Låt oss kontrollera målfilen med hjälp av kattfrågan. Utmatningsskärmen visar data om 20 tecken i målfilen.

$kattmål

Exec System Call:

Exec -systemanropet avvisas för att köra en fil som för närvarande bearbetas. Den tidigare körbara filen ersätts och den aktuella filen används när exec anropas. Genom att använda ett exec -systemanrop kan vi anta att det kommer att skriva över det gamla dokumentet eller programmet i loop med ett nytt. Ny programvara används för att åsidosätta hela processens material. Dokumentet vars titel anges i uttalandet när anropande av exec () ersätts med användarinformationsavsnittet som kör exec () systemanropet (). Så öppna kommandoterminalen och skapa en ny C -typfil med följande:

$nanoexp.c

Redaktören har öppnats nu. Skriv ut hela C -språkkoden nedan. Det finns tre huvudbibliotek som ingår i det. Därefter har huvudfunktionen instanserats. Utskriftsuttalandet har visat strängdata och process -id för filen exp.c. Funktionen getpid () har använts för detta ändamål. Sedan har vi en teckentypmatris med några värden i den. Exec-systemanropet har använts för att ta filnamnet och den enradiga matrisen som ett argument. Nu kommer hello.c -filen att bearbetas. Efter det kommer ännu en utskriftsbesked så långt, men det kommer aldrig att köras. Tryck på Ctrl+S för att spara den här filen. Tryck Ctrl+X för att avsluta.

Nu är det dags att skapa en annan c -fil, hello.c med hjälp av nanoredigeraren. Använd nedanstående fråga i skalet för att göra det.

$nanoHej C

Skriv koden nedan. Denna kod innehåller två utskriftssatser i huvudfunktionen. Den första skriver bara ut en sträng som anges i den, och den andra skriver ut strängen medan hämtning av process -ID för den för närvarande använda filen, som är hello.c.

Låt oss kompilera båda filerna efter varandra med gcc.

$gcc–O exp exp.c

$gcc–O hej hej. C

När vi kör exp.c -filen kommer det första utskriftsuttrycket att matas ut från exp.c -filen och båda utskriftslinjerna från hello.c -filen.

$./exp

Slutsats:

Vi har utvecklat hela konceptet med Linux -systemsamtal och hur de kan användas i ditt Linux -system. Vi har använt Ubuntu 20.04 under implementeringen av detta koncept.