Kako uporabljati Zapiši sistemski klic v C

How Use Write System Call C



Sistemski klic služi kot primarni prehod med programi in jedrom operacijskega sistema Linux. Čeprav bi morali skorajda vso svojo programsko kariero imeti sistemski klic, ne glede na to, ali si prizadevate za izjemno produktivnost ali določen slog funkcij, bo skladišče Glibc ali druge standardne knjižnice, ki jih najdete v priljubljenih distribucijah Linuxa, zadostovale za večino vaših zahteve. V tem priročniku bomo vzpostavili koncept klica sistema pisanja v jeziku C.

Sintaksa:

#vključi

ssize_tpisati(int fd, const void*buf, velikost_t šteje);

V tej zgornji skladnji prva vrstica prikazuje knjižnico 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 pufer. Ta vsebuje vse podatke. Naslednje je štetje. To je število bajtov, ki jih je treba zapisati v deskriptor datoteke iz medpomnilnika.







Predpogoji za namestitev:

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



$sudoaptnamestitemanpages-dev



Namestitev strani bo trajala nekaj časa. Počakajte, da se dokonča.





Po namestitvi si lahko ogledate dodatne informacije o sistemskem klicu pisanja s spodnjim ukazom man v lupini.



$človek 2 pisati

Spodaj je prikazana izhodna stran za ukaz write. Podatke o tem lahko preberete. Pritisnite q, da zaprete priročnik.

Zdaj je čas, da v sistem Linux namestite paket Gcc, da bo deloval v jeziku C. V ta namen odprite lupino in napišite spodnji ukaz apt install, ki mu sledi ključna beseda gcc.

$sudoaptnamestite gcc

Medtem vas lahko med namestitvijo prosi, da potrdite to dejanje namestitve, tako da pritisnete y za nadaljevanje in n za ustavitev. Zato se dotaknite tipke y in pritisnite tipko Enter.

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

Primeri:

Nekaj ​​primerov pisnega sistemskega klica v distribuciji Linuxa. Zato odprite lupino ukazne vrstice in v njej ustvarite novo datoteko C s končnico dot c. Za hitro ustvarjanje in odpiranje morate uporabiti spodnji ukaz nano. Dali smo mu ime new.c.

$nanonovo.c

Odprlo se bo spodnje okno. Zdaj morate v to datoteko zapisati pritrjeno kodo. V to kodo smo najprej vključili knjižnico unistd.h. Nato smo ustvarili glavno funkcijo in znotraj te funkcije smo ustvarili pisni sistemski klic. 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. K temu lahko dodate karkoli. Zadnji parameter pa prikazuje številsko številko podatkov, podanih v parametru medpomnilnika. Kot smo omenili 5 kot število štetja, bo prikazalo le prvih 5 bajtov vmesnih podatkov in prezrlo preostale bajte. Shranite to kodo s tipko za bližnjico Ctrl+S in zapustite to datoteko z ukazom Ctrl+X.

#vključi

Int glavna()

{Pišite(1Aksa Yasin5);}

Zdaj v terminalu poskusite spodnji ukaz gcc sestaviti to novo ustvarjeno kodo z imenom datoteke.

$gccnovo.c

Preverimo to kodo z uporabo privzete datoteke a.out, ustvarjene med izvajanjem. Zato poskusite s spodnjim ukazom a.out, da preverite izhod sistemskega klica pisanja. Uporabiti ga moramo z ./, da izberemo datoteko iz trenutnega imenika.

$./a.out

Izhod, ki ga vidite, je prikazal besedo Aqsa samo zaradi števila 5.

Malo spremenimo kodo. Številko štetja smo spremenili na 11, ker imamo v bafer podatkih Aqsa Yasin skupaj 11 bajtov. Tokrat bo izhod prikazal celotne bajte nizov podatkov Aqsa Yasin. Shranite to datoteko s kombinacijo tipk Ctrl+S in zaprite s tipko za bližnjico Ctrl+X.

Sestavimo posodobljeno kodo z novo nameščenim prevajalnikom gcc za distribucijo Linuxa. Poskusite isti ukaz gcc skupaj z imenom datoteke kot new.c.

$gccnovo.c

Sedaj prikažite izpis iste kode s prejšnjim ukazom a.out, kot je prikazano spodaj. Izhod prikazuje celoten niz Aqsa Yasin vmesnega pomnilnika.

$./a.out

Poglejmo, kako deluje koda, če vzamemo število štetja večje od skupnega števila bajtov, ki jih vsebujejo vmesni podatki. Štetje smo uporabili kot 30. Shranite in zaprite datoteko.

Z ukazom gcc sestavite isto posodobljeno datoteko, kot je opisano spodaj.

$gccnovo.c

Zdaj izvedite datoteko z ukazom a.out in izhod bo prikazal podatke vmesnega pomnilnika in nekaj vrednosti smeti z njimi, kot je prikazano v spodnjem izhodu posnetka. $ ./A.out

S pomočjo spodnje kode v isti datoteki lahko preverite tudi skupno število bajtov, zapisanih v datoteko.

Sestavite kodo po navodilih gcc.

$gccnovo.c

Izhod prikazuje skupno število bajtov, vključno z vmesnimi podatki in prelomom vrstice, z uporabo ukaza a.out.

$./a.out

Zaključek:

V tej vadnici smo razvili koncept uporabe sistemskega klica Write v C. Preizkusite vse primere, da bi razumeli idejo sistemskega klica pisanja s tem člankom.