C Programiranje

Kako koristiti pisanje sistemskog poziva u C

Kako koristiti pisanje sistemskog poziva u C

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:

#include
ssize_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.

#include
Int 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.van

Izlaz 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.

Kako koristiti GameConqueror Cheat Engine u Linuxu
Članak pokriva vodič o korištenju GameConqueror varalice u Linuxu. Mnogi korisnici koji igraju igre na sustavu Windows često koriste aplikaciju "Cheat...
Najbolji emulatori igraće konzole za Linux
Ovaj će članak navesti popularni softver za emulaciju igraće konzole dostupan za Linux. Emulacija je sloj kompatibilnosti softvera koji oponaša hardve...
Najbolji Linux Distros za igre na sreću 2021. godine
Linux operativni sustav daleko je prevalio svoj izvorni, jednostavni izgled zasnovan na poslužitelju. Ovaj se OS posljednjih godina izuzetno poboljšao...