Kako se koristi Zapiši sistemski poziv na jeziku C

How Use Write System Call C



Sistemski poziv služi kao primarni pristupnik između programa i jezgre operacijskog sustava Linux. Iako biste gotovo sigurno morali imati sistemski poziv tijekom svoje karijere programiranja na C -u, bez obzira na to želite li iznimnu produktivnost ili određeni stil značajki, spremište Glibc ili druge standardne knjižnice koje se nalaze u popularnim Linux distribucijama bit će dovoljne za većinu vaših zahtjevima. U ovom vodiču ćemo uspostaviti koncept poziva sistema za pisanje na jeziku C.

Sintaksa:

#uključi

ssize_tpisati(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. Ovo sadrži bilo kakve podatke. Slijedi računanje. To je broj bajtova koji se zapisuju u deskriptor datoteke iz međuspremnika.







Preduvjeti za instaliranje:

Da biste pokrenuli bilo koji kôd jezika C, morate prvo instalirati neke pakete u distribuciju Linuxa. Ako želite vidjeti dodatne informacije o sistemskom pozivu pisanja, za to morate instalirati paket manpages-dev. Za otvaranje terminala pomoću tipke prečaca Ctrl+Alt+T. Nakon što ga otvorite, napišite donju naredbu apt install koju slijedi ključna riječ manpages-dev za instaliranje stranica.



$sudoprikladaninstaliratimanpages-dev



Za instaliranje stranica bit će potrebno neko vrijeme. Pričekajte da se završi.





Nakon instalacije, možete vidjeti dodatne informacije o sistemskom pozivu pisanja putem donje naredbe man u ljusci.



$čovjek 2 pisati

Izlazna man stranica za naredbu write data je dolje. Informacije o tome možete pročitati. Pritisnite q za zatvaranje priručnika.

Sada je vrijeme da instalirate Gcc paket u svoj Linux sustav kako biste radili na jeziku C. U tu svrhu otvorite ljusku i napišite donju naredbu apt install koju slijedi ključna riječ gcc.

$sudoprikladaninstalirati gcc

U međuvremenu, tijekom instalacije, možda će se od vas tražiti da potvrdite ovu radnju 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 redovi izlaza bit će prikazani na donjoj snimci.

Primjeri:

Uzmimo neke primjere sistemskog poziva pisanja u našoj distribuciji Linuxa. Stoga otvorite ljusku naredbenog retka i u njoj stvorite novu C datoteku s nastavkom dot c. Morate upotrijebiti donju nano naredbu za brzo stvaranje i otvaranje. Dali smo mu ime new.c.

$nanonovo.c

Otvorit će se donji prozor. Sada morate unijeti pričvršćeni kôd u ovu datoteku. U ovaj smo kôd prvo uključili unistd.h knjižnicu. Zatim smo stvorili glavnu funkciju, a unutar ove funkcije stvorili smo sistemski poziv pisanja. U ovom sistemskom pozivu, prvi parametar je deskriptor datoteke. U ovom slučaju cijeli broj 1 predstavlja zaslon izlaznog uređaja i on je fiksan. Tako će se naš izlaz prikazati na ekranu. Drugi parametar prikazuje podatke o međuspremniku. Možete mu dodati bilo što. Posljednji parametar prikazuje broj za podatke navedene u parametru međuspremnika. Kao što smo spomenuli 5 kao broj za brojanje, on će prikazati 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.

#uključi

Int glavno()

{Pisati(1Aksa Yasin5);}

Sada u terminalu pokušajte donju naredbu gcc sastaviti ovaj novostvoreni kod s imenom datoteke.

$gccnovo.c

Provjerimo ovaj kôd pomoću zadane a.out datoteke stvorene za vrijeme izvođenja. Dakle, pokušajte s naredbom a.out provjeriti izlaz sistemskog poziva za pisanje. Moramo ga koristiti s ./ za odabir datoteke iz trenutnog direktorija.

$./a.out

Na izlazu koji vidite možete vidjeti samo riječ Aqsa zbog broja 5.

Promijenimo malo svoj kôd. Promijenili smo broj za brojanje na 11 jer imamo ukupno 11 bajtova u našim podacima o međuspremniku Aqsa Yasin. Tako će ovaj put izlaz pokazati cijele bajtove podataka o nizu Aqsa Yasin. Spremite ovu datoteku pomoću Ctrl+S i zatvorite pomoću tipke prečaca Ctrl+X.

Sastavimo ažurirani kôd pomoću novoinstaliranog gcc prevoditelja za distribuciju Linuxa. Pokušajte s istom naredbom gcc zajedno s imenom datoteke kao new.c.

$gccnovo.c

Sada prikažite izlaz istog koda pomoću prethodne naredbe a.out kao u nastavku. Izlaz prikazuje cijeli niz Aqsa Yasin međuspremnika.

$./a.out

Pogledajmo kako kôd funkcionira kada uzmemo broj računa veći od ukupnog broja bajtova koje podaci međuspremnika sadrže. Dakle, mi smo koristili count kao 30. Spremite i zatvorite datoteku.

Sastavite istu ažuriranu datoteku pomoću naredbe gcc kao u nastavku.

$gccnovo.c

Sada izvedite datoteku pomoću naredbe a.out, a izlaz će prikazati podatke o međuspremniku, kao i neku vrijednost smeća s njima kako je prikazano u izlaznom snimku ispod. $ ./A.out

Također možete provjeriti ukupan broj bajtova upisanih u datoteku pomoću donjeg koda u istoj datoteci.

Sastavite kôd prema gcc uputama.

$gccnovo.c

Izlaz prikazuje ukupan broj bajtova, uključujući podatke o međuspremniku i prijelom retka, pomoću naredbe a.out.

$./a.out

Zaključak:

U ovom smo vodiču razradili koncept korištenja sistemskog poziva Write u C. Isprobajte sve primjere da biste razumjeli ideju sistemskog poziva pisanja koristeći ovaj članak.