Kako uporabljati odprti sistemski klic v C

How Use Open System Call C



Sistemski klici se uporabljajo v distribucijah Linuxa za zagotavljanje vrat znotraj operacijskega sistema Linux in programov. Operacijski sistem Linux uporablja knjižnico Glibc za podporo sistemskim klicem v njem, medtem ko uporablja jezik C. Sistemskih klicev je tudi veliko več. V tem priročniku za članek bomo razpravljali o odprtem sistemskem klicu v sistemu Linux. Odprti sistemski klic je bil uporabljen za hitro odpiranje datoteke, navedene na poti. Sporočil nam je o deskriptorju datoteke uporabniško ustvarjene datoteke. Ubuntu 20.04 smo uporabljali za klic na odprti sistemski klic.

Namestite knjižnice

Jezik C zahteva, da so kot predpogoji nameščeni nekateri dodatni knjižnični paketi. Najprej morate namestiti paket manpages-dev, da preverite informacije o sistemskih klicih. Odprite terminal ukazne vrstice iz območja dejavnosti in izvedite spodnje navodilo za namestitev strani.







$ sudo apt namestite strani-dev



Spodaj so navedeni rezultati za dokončanje namestitve.







Zdaj bomo preverili odprt sistemski klic z ukazom man, kot je prikazano spodaj.

$ mož2odprto



Spodaj je prikazana izhodna stran za odprti sistemski klic. Dodatne informacije o tem si lahko ogledate. Za izhod pritisnite gumb q.

Zgornja sintaksa prikazuje prve tri vrstice potrebnih knjižnic, ki jih je treba dodati za sistemske klice. Za odprti sistemski klic so na voljo tri skladnje. Prva skladnja prikazuje ime poti, ki je ime datoteke, ki jo je treba odpreti. Drugi parameter, zastavice, prikazuje način datoteke, na primer branje ali pisanje. Drugo skladnjo lahko uporabite, če datoteka ne obstaja. Način parametrov se uporablja za prikaz privilegijev v datoteki.

Zdaj je čas za namestitev prevajalnika GCC za odpravljanje napak kode C v distribuciji Ubuntu 20.04 Linux. Če želite to narediti, v lupini izvedite spodnje navodilo.

$ sudo apt install gcc

Za nadaljevanje namestitve prevajalnika GCC morate pritisniti Y, sicer pritisnite gumb n, da zaprete namestitev. Zato pritisnite gumb y in pritisnite Enter za nadaljevanje.

Izhod za dokončanje je prikazan spodaj.

Primer 01

Poglejmo zelo preprost primer odprtega sistemskega klica. Najprej odprite ukazno lupino in s preprostim ukazom na dotik ustvarite novo besedilno datoteko test.txt:

$dotiktest.txt

Ročno mu dodajte nekaj podatkov. Podatke v datoteki si lahko ogledate s spodnjim ukazom cat.

$mačkatest.txt

Ustvarimo novo datoteko C z ukazom nano v lupini, kot je prikazano spodaj.

$nanonovo.c

Odprla se bo spodnja nano datoteka GNU. Vanj morate vnesti spodnjo kodo jezika C. Vidite lahko, da smo dodali potrebne knjižnične pakete za pravilno izvedbo kode C. Po tem smo opredelili glavno funkcijo za delo pri odprtem sistemskem klicu. Razglasili smo dve celobrojni spremenljivki. Spremenljivka n se uporablja za štetje vmesnih vrednosti, fd pa za deskriptor datoteke. Polje vmesnega tipa znakov smo razglasili za buf velikosti 50. Odprti sistemski klic je bil uporabljen za branje vsebine iz datoteke test.txt in njeno vrnitev v deskriptor datoteke. O_RDONLY je bil uporabljen za branje. Naslednja vrstica prikazuje prebrani sistemski klic za zbiranje 10 bajtov iz vmesnega pomnilnika in vrnitev v celo število n. Ukaz write je bil uporabljen tudi za zapis vsebine ali vmesnih podatkov v deskriptor datoteke, kar je izhodni zaslon V našem primeru zdaj. To datoteko shranite s kombinacijo tipk Ctrl+S in jo zaprite z ukazom Ctrl+X.

#vključi
#vključi
#vključi
#vključi

intglavni()
{
intn,fd;
charbuf[petdeset];
fd=odprto(preskus.txt,O_RDONLY);
n=prebrati(fd,buf, 10);
pisati(1 ,buf, 10);

Najprej s spodnjim ukazom gcc sestavimo kodo C za odprt sistemski klic.

$gccnovo.c

Zdaj je čas, da preverite izhod za kodo C za odprt sistemski klic. V lupini uporabimo spodnji ukaz a.out. Izhod prikazuje 10 bajtov iz vsebine datoteke test.txt.

$./do.ven

Vzemimo še en primer zapisovanja vsebine ene datoteke v drugo datoteko s sistemskim klicem Open. Če želite ustvariti novo datoteko C z uporabo ukaza nano, kot je prikazano spodaj.

$ nano nov.c

Zato vzemite isto kodo z manjšo spremembo. V kodi smo opredelili drug opisnik datotek kot fd1. Vsa koda je enaka, razen ene dodatne vrstice. Druga zadnja vrstica kode je uporabila odprti sistemski klic za ustvarjanje nove datoteke z imenom target z uporabo O_CREAT in načina, samo za pisanje kot O_WRONLY. 0642 prikazuje privilegije, dodeljene tej datoteki. Datoteka je bila vrnjena v nov deskriptor datoteke. V naslednji vrstici je prikazan ukaz za zapisovanje bajtov vsebine v medpomnilnik v skladu z opisom datoteke. Shranite datoteko in jo zaprite.

Za odpravljanje napak v datoteki jezika C izvedite ukaz gcc compile.

$ gcc nov.c

Če želite prikazati izpis kode C, poskusite ukaz a.out v lupini, kot je prikazano spodaj. Izhoda ni, ker je bil izhod preusmerjen na novo ustvarjen cilj datoteke.

$./do.ven

Preverimo podatke o ciljni datoteki z ukazom cat. Izhod kaže, da ima datoteka 20 bajtov.

$ cat cat

Zaključek

V zgornji vadnici smo vam razložili uporabo odprtega sistemskega klica v jeziku C z uporabo prevajalnika gcc. S pomočjo različnih primerov, razloženih v tem priročniku, vas bodo pripeljali do izvajanja želenega programa.