Så här använder du Skrivsystemsamtal i C

How Use Write System Call C



Systemanropet fungerar som den primära gatewayen mellan program och Linux -operativsystemets kärna. Även om du nästan säkert skulle behöva ha ett systemanrop under din C -programmeringskarriär, oavsett om du siktar på exceptionell produktivitet eller en viss typ av funktion, så kommer Glibc -förvaret eller andra standardbibliotek som finns i populära Linux -distros att räcka för de allra flesta av dina krav. I den här guiden kommer vi att etablera ett koncept om skrivsystemsamtalet på C -språk.

Syntax:

#omfatta

ssize_tskriva(int fd, const void*buf, size_t count);

I denna syntax ovan visar den första raden biblioteket för systemanrop. På den andra raden står fd för en filbeskrivare som verkligen är ett tal som anger en process öppen fil. Nyckelordet *buf står för buffert. Den innehåller alla uppgifter i den. Nästa är räkningen. Det är antalet byte som ska skrivas till en filbeskrivare från bufferten.







Installera förutsättningar:

För att köra en C -språkkod måste du först installera några paket i Linux -distribution. Om du vill se ytterligare information om skrivsystemsamtalet måste du installera paketet manpages-dev för att göra det. För att öppna terminalen med Ctrl+Alt+T genväg. När du har öppnat det skriver du nedan apt apt-kommandot följt av nyckelordet manpages-dev för att installera manpages.



$sudobenägenInstalleramanpages-dev



Det kommer att ta lite tid att installera manpages. Vänta tills det är klart.





Efter installationen kan du se ytterligare information om skrivsystemsamtalet via kommandot man nedan i skalet.



$man 2 skriva

Utmatningssidan för skrivkommandot ges nedan. Du kan läsa informationen om det. Tryck på q för att avsluta manualen.

Nu är det dags att installera Gcc -paketet i ditt Linux -system för att fungera på C -språket. För det öppnar du skalet och skriver kommandot apt install nedan, följt av sökordet gcc.

$sudobenägenInstallera gcc

Under installationen kan det be dig att bekräfta installationen genom att trycka på y för att fortsätta och n för att stoppa den. Så tryck på y -knappen och tryck på Enter -tangenten.

Det kommer att installeras i ditt system inom några minuter, och de sista raderna kommer att vara som visas i ögonblicksbilden nedan.

Exempel:

Låt oss ha några exempel på ett skrivsystemsamtal i vår Linux -distribution. Öppna därför kommandoradsskalet och skapa en ny C-fil i den med punkt c-tillägget. Du måste använda kommandot nano nedan för att snabbt skapa och öppna det. Vi har gett den ett nytt namn. C.

$nanonytt. c

Fönstret nedan öppnas. Nu måste du skriva den fästa koden i den här filen. I den här koden har vi inkluderat ett unistd.h -bibliotek först. Sedan har vi skapat huvudfunktionen, och inom denna funktion har vi skapat ett skrivsystemsamtal. I detta systemanrop är den allra första parametern filbeskrivningen. I detta fall representerar heltal 1 utmatningsenhetens skärm, och det är fixat. Så vår produktion kommer att visas på skärmen. Den andra parametern visar buffertdata. Du kan lägga till allt. Och den sista parametern visar räkningsnumret för data som ges i buffertparametern. Som vi har nämnt 5 som räkningsnummer, kommer det bara att visa de första 5 byten i buffertdata och ignorera de byte som finns kvar. Spara den här koden med Ctrl+S -genvägstangenten och avsluta filen med kommandot Ctrl+X.

#omfatta

Int main()

{Skriva(1Aqsa Yasin5);}

Nu i terminalen, försök med kommandot gcc nedan för att kompilera den här nyskapade koden med ett filnamn.

$gccnytt. c

Låt oss kolla in den här koden med standard a.out -filen som skapades vid körning. Så, försök med kommandot a.out nedan för att kontrollera utmatningen från skrivsystemsamtalet. Vi måste använda den med ./ för att välja filen från den aktuella katalogen.

$./a. ut

Utmatningen du kan se har bara visat ordet Aqsa på grund av räkningsnumret 5.

Låt oss ändra vår kod lite. Vi har ändrat räkningsnumret till 11 eftersom vi har totalt 11 byte i våra buffertdata Aqsa Yasin. Så den här gången kommer utmatningen att visa hela byte med strängdata Aqsa Yasin. Spara filen med Ctrl+S och avsluta med Ctrl+X -genvägstangenten.

Låt oss kompilera den uppdaterade koden med den nyinstallerade gcc -kompilatorn för Linux -distribution. Prova samma gcc -kommando tillsammans med namnet på en fil som new.c.

$gccnytt. c

Visa nu utmatningen av samma kod med föregående a.out -kommando som nedan. Utdata visar hela strängen Aqsa Yasin för bufferten.

$./a. ut

Låt oss se hur koden fungerar när vi tar räkningsnumret som är större än det totala antalet byte som buffertdata innehåller. Så vi har använt räkningen som 30. Spara och stäng filen.

Kompilera samma uppdaterade fil med gcc -kommandot som nedan.

$gccnytt. c

Kör nu filen med kommandot a.out, och utdata visar buffertdata samt lite skräpvärde med den som visas i ögonblicksbildutmatningen nedan. $ ./A.out

Du kan också kontrollera det totala antalet byte som skrivs in i filen med hjälp av koden nedan i samma fil.

Kompilera koden med gcc -instruktion.

$gccnytt. c

Utdata visar det totala antalet byte, inklusive buffertdata och radbrytning, med kommandot a.out.

$./a. ut

Slutsats:

I den här självstudien har vi utvecklat konceptet för att använda skrivsystemsamtalet i C. Testa alla exempel för att förstå tanken på skrivsystemsamtalet med den här artikeln.