C Programiranje

Kako uporabljati pisanje sistemskega klica v C

Kako uporabljati pisanje sistemskega klica v C

Sistemski klic služi kot primarni prehod med programi in jedrom operacijskega sistema Linux. Čeprav bi skoraj zagotovo morali imeti sistemski klic v celotni programski karieri C, ne glede na to, ali si prizadevate za izjemno produktivnost ali določen slog funkcije, bo skladišče Glibc ali druge standardne knjižnice v priljubljenih distribucijah Linuxa zadostovale za veliko večino zahteve. V tem priročniku bomo predstavili koncept klica sistema System Write v jeziku C.

Sintaksa:

#include
ssize_t pisanje (int fd, const void * buf, size_t count);

V tej zgornji sintaksi je v prvi vrstici prikazana knjižnica za sistemske klice. V drugi vrstici fd pomeni deskriptor datoteke, ki je dejansko številka, ki določa odprto datoteko procesa. Ključna beseda * buf pomeni buffer. Ta vsebuje vse podatke. Naslednje je štetje. To je število bajtov, ki jih je treba v medpomnilnik zapisati v deskriptor datoteke.

Predpogoji za namestitev:

Če želite zagnati katero koli kodo jezika C, morate najprej namestiti nekaj paketov v distribucijo Linuxa. Če želite videti dodatne informacije v zvezi s sistemskim klicem za pisanje, morate za to namestiti paket manpages-dev. Če želite odpreti terminal, uporabite bližnjično tipko Ctrl + Alt + T. Ko ga odprete, za namestitev strani napišite spodnji ukaz apt install, ki mu sledi ključna beseda manpages-dev.

$ sudo apt install manpages-dev

Nekaj ​​časa bo trajalo, da namestite strani. Počakajte, da se dokonča.

Po namestitvi si lahko ogledate dodatne informacije o sistemskem klicu “write” prek spodnjega ukaza man v lupini.

$ man 2 piši

Izhodna man stran za ukaz “write” je podana spodaj. Informacije o tem lahko preberete. Pritisnite q, da zaprete priročnik.

Zdaj je čas, da v svoj sistem Linux namestite paket »Gcc«, da deluje v jeziku C. Za to odprite lupino in napišite spodnji ukaz apt install, ki mu sledi ključna beseda “gcc”.

$ sudo apt namestite gcc

Medtem vas bo med namestitvijo morda moral potrditi to dejanje namestitve s pritiskom na "y" za nadaljevanje in z "n" za zaustavitev. Torej, tapnite tipko "y" in pritisnite tipko Enter.

V vašem sistemu bo nameščen v nekaj minutah, zadnje izhodne vrstice pa bodo prikazane na spodnjem posnetku.

Primeri:

Oglejmo si nekaj primerov sistemskega klica za pisanje v naši distribuciji Linuxa. Zato odprite lupino ukazne vrstice in v njej ustvarite novo datoteko C s piko »c«. Za hitro ustvarjanje in odpiranje morate uporabiti spodnji ukaz nano. Ime smo dobili kot »novo.c ".

$ nano novo.c

Odpre se spodnje okno. Zdaj morate v to datoteko vpisati pritrjeno kodo. V to kodo smo vključili unistd.h knjižnica najprej. Nato smo ustvarili glavno funkcijo, znotraj te funkcije pa sistemski klic »pisanje«. V tem sistemskem klicu je prvi parameter deskriptor datoteke. V tem primeru celo število 1 predstavlja zaslon izhodne naprave in je fiksno. Tako bo naš izhod prikazan na zaslonu. Drugi parameter prikazuje podatke medpomnilnika. Lahko mu dodate kar koli. In zadnji parameter prikazuje število štetja za podatke, podane v parametru medpomnilnika. Ker smo kot število štetja omenili 5, bo prikazal le prvih 5 bajtov podatkov medpomnilnika in prezrl leve bajte. Shranite to kodo z bližnjično tipko Ctrl + S in zapustite to datoteko z ukazom Ctrl + X.

#include
Int main ()
Napišite (1, “Aqsa Yasin”, 5);

Zdaj v terminalu poskusite s spodnjim ukazom gcc, da sestavite novo ustvarjeno kodo z imenom datoteke.

$ gcc novo.c

Preverimo to kodo z uporabo privzete a.izhodna datoteka, ustvarjena med izvajanjem. Torej, poskusite spodaj a.out ukaz za preverjanje izhoda sistemskega klica “write”. Uporabiti ga moramo z “./ ”, Da izberete datoteko iz trenutnega imenika.

$ ./ a.ven

Na izhodu, ki ga vidite, je beseda "Aqsa" prikazana samo zaradi števila 5.

Spremenimo svojo kodo malo. Število štetja smo spremenili na 11, ker imamo v baferju podatkov "Aqsa Yasin" skupno 11 bajtov. Tokrat bodo na izhodu prikazani celotni bajti nizovnih podatkov "Aqsa Yasin". Shranite to datoteko s kombinacijo tipk Ctrl + S in zaprete s tipko Ctrl + X.

Sestavimo posodobljeno kodo z novo nameščenim prevajalnikom gcc za distribucijo Linuxa. Poskusite z istim ukazom gcc skupaj z imenom datoteke kot »novo.c ".

$ gcc novo.c

Zdaj prikažite izhod iste kode z uporabo prejšnjega „a.kot je prikazano spodaj. Na izhodu je prikazan celoten niz "Aqsa Yasin" vmesnega pomnilnika.

$ ./ a.ven

Poglejmo, kako deluje koda, ko vzamemo število štetja večje od skupnega števila bajtov, ki jih vsebujejo podatki medpomnilnika. Torej, štetje uporabljamo kot 30. Shranite in zaprite datoteko.

Sestavite isto posodobljeno datoteko z ukazom gcc kot spodaj.

$ gcc novo.c

Zdaj zaženite datoteko z uporabo a.out, izhod pa bo prikazal podatke medpomnilnika in nekatere vrednosti smeti, kot je prikazano v spodnjem izhodu posnetka.$ ./ a.ven

Skupno število bajtov, zapisanih v datoteko, lahko preverite tudi z uporabo spodnje kode v isti datoteki.

Sestavite kodo po navodilih gcc.

$ gcc novo.c

Izhod prikazuje skupno število bajtov, vključno s podatki medpomnilnika in prelomom vrstice, z uporabo a.out ukaz.

$ ./ a.ven

Zaključek:

V tej vadnici smo razvili koncept uporabe sistemskega klica »Write« v jeziku C. Preizkusite vse primere, da boste s tem člankom razumeli zamisel sistemskega klica »pisanje«.

Vulkan za uporabnike Linuxa
Z vsako novo generacijo grafičnih kart vidimo, da razvijalci iger premikajo meje grafične zvestobe in se približujejo fotorealizmu. A kljub vsem kredi...
OpenTTD vs Simutrans
Ustvarjanje lastne simulacije prevoza je lahko zabavno, sproščujoče in izjemno vabljivo. Zato morate preizkusiti čim več iger, da boste našli tisto, k...
Vadnica za OpenTTD
OpenTTD je ena izmed najbolj priljubljenih poslovnih simulacijskih iger. V tej igri morate ustvariti čudovit prevozniški posel. Vendar boste začeli na...