Sistemski poziv služi kao primarni prolaz između programa i jezgre operativnog sustava Linux. Iako biste gotovo sigurno trebali imati sistemski poziv tijekom cijele vaše C programske karijere, bez obzira ciljate li iznimnu produktivnost ili određeni stil značajke, Glibc spremište ili druge standardne knjižnice pronađene u popularnim Linux distribucijama bit će dovoljne za veliku većinu vaših zahtjevima. U ovom ćemo vodiču uspostaviti koncept o pozivu Write System na jeziku C.
Sintaksa:
#includessize_t write (int fd, const void * buf, size_t count);
U ovoj gornjoj sintaksi, prvi redak prikazuje knjižnicu za sistemske pozive. U drugom retku fd označava deskriptor datoteke koji je doista broj koji određuje otvorenu datoteku procesa. Ključna riječ * buf označava tampon. Sadrži sve podatke. Sljedeće je brojanje. To je broj bajtova koji se iz međuspremnika upisuje u deskriptor datoteke.
Preduvjeti za instalaciju:
Da biste pokrenuli bilo koji kod jezika C, prvo morate instalirati neke pakete u Linux distribuciju. Ako želite vidjeti daljnje informacije u vezi sa sistemskim pozivom za pisanje, morate instalirati paket manpages-dev da biste to učinili. Za otvaranje terminala pomoću tipke prečaca Ctrl + Alt + T. Nakon otvaranja, napišite donju naredbu apt install nakon koje slijedi ključna riječ manpages-dev da biste instalirali stranice.
$ sudo apt install manpages-dev
Trebat će neko vrijeme za instaliranje manpagesa. Pričekajte da se dovrši.
Nakon instalacije možete vidjeti dodatne informacije o sistemskom pozivu “write” putem dolje navedene naredbe man u ljusci.
$ man 2 napiši
Izlazna man stranica za naredbu "write" data je u nastavku. Informacije o tome možete pročitati. Pritisnite q za napuštanje priručnika.
Sada je vrijeme da instalirate paket "Gcc" u svoj Linux sustav za rad na C jeziku. Za to otvorite ljusku i napišite donju naredbu apt install nakon čega slijedi ključna riječ "gcc".
$ sudo apt instalirati gcc
U međuvremenu, tijekom instalacije može zatražiti da potvrdite ovu akciju instalacije pritiskom na "y" za nastavak i "n" za zaustavljanje. Dakle, dodirnite tipku "y" i pritisnite tipku Enter.
Bit će instaliran u vaš sustav u roku od nekoliko minuta, a posljednji retci izlaza bit će prikazani na donjoj snimci.
Primjeri:
Imajmo nekoliko primjera sistemskog poziva "write" u našoj Linux distribuciji. Stoga otvorite ljusku naredbenog retka i u njoj stvorite novu C datoteku s točkom "c". Morate upotrijebiti donju nano naredbu da biste je brzo stvorili i otvorili. Dali smo mu ime kao „novo.c ".
$ nano novo.c
Otvorit će se donji prozor. Sada u ovu datoteku morate napisati pričvršćeni kod. U ovaj kod uvrstili smo unistd.h knjižnica prvo. Tada smo stvorili glavnu funkciju, a unutar te funkcije stvorili smo sistemski poziv "write". U ovom sistemskom pozivu, prvi parametar je deskriptor datoteke. U ovom slučaju, cijeli broj 1 predstavlja zaslon izlaznog uređaja i on je fiksiran. Tako će naš izlaz biti prikazan na ekranu. Drugi parametar prikazuje podatke međuspremnika. Možete mu dodati bilo što. I posljednji parametar prikazuje broj broja za podatke dane u parametru međuspremnika. Kao što smo spomenuli 5 kao brojni broj, prikazat će samo prvih 5 bajtova podataka međuspremnika i zanemariti preostale bajtove. Spremite ovaj kôd pomoću tipke prečaca Ctrl + S i izađite iz ove datoteke pomoću naredbe Ctrl + X.
#includeInt main ()
Napišite (1, “Aqsa Yasin”, 5);
Sada u terminalu, isprobajte naredbu gcc za kompajliranje ovog novostvorenog koda s imenom datoteke.
$ gcc novo.c
Provjerimo ovaj kod pomoću zadane a.datoteka stvorena u vrijeme izvođenja. Dakle, pokušajte dolje a.out naredba za provjeru rezultata sistemskog poziva "write". Moramo ga koristiti s “./ ”Za odabir datoteke iz trenutnog direktorija.
$ ./ a.vanIzlaz koji vidite prikazuje samo riječ "Aqsa" zbog brojača 5.
Promijenimo malo svoj kod. Promijenili smo broj odbrojavanja na 11, jer imamo ukupno 11 bajtova u podacima međuspremnika "Aqsa Yasin". Dakle, ovaj put će izlaz prikazati cijele bajtove string podataka "Aqsa Yasin". Spremite ovu datoteku pomoću Ctrl + S i zatvorite pomoću tipke prečaca Ctrl + X.
Sastavimo ažurirani kôd koristeći novoinstalirani gcc prevodilac za Linux distribuciju. Isprobajte istu naredbu gcc zajedno s nazivom datoteke kao „novo.c ".
$ gcc novo.c
Sada prikažite izlaz istog koda koristeći prethodni “a.out ”naredba kao u nastavku. Izlaz prikazuje puni niz "Aqsa Yasin" međuspremnika.
$ ./ a.van
Pogledajmo kako kod funkcionira kada uzmemo broj broja veći od ukupnog broja bajtova koje sadrže podaci međuspremnika. Dakle, koristimo brojanje kao 30. Spremite i zatvorite datoteku.
Sastavite istu ažuriranu datoteku pomoću naredbe gcc kao u nastavku.
$ gcc novo.c
Sada izvršite datoteku pomoću a.out, a izlaz će prikazati podatke međuspremnika, kao i neku vrijednost smeća s njima, kao što je prikazano u izlazu snimke ispod.$ ./ a.van
Također možete provjeriti ukupan broj bajtova zapisanih u datoteku pomoću donjeg koda u istoj datoteci.
Sastavite kod prema naredbi gcc.
$ gcc novo.c
Izlaz prikazuje ukupan broj bajtova, uključujući podatke međuspremnika i prijelom retka, koristeći a.out naredba.
$ ./ a.van
Zaključak:
U ovom smo tutorijalu razradili koncept korištenja sistemskog poziva "Write" u C. Isprobajte sve primjere da biste shvatili ideju sistemskog poziva "write" pomoću ovog članka.