Kako koristiti Open System Call u jeziku C

How Use Open System Call C



Sistemski pozivi koriste se u distribucijama Linuxa kako bi omogućili ulaz u Linux OS i programe. Operacijski sustav Linux koristi biblioteku Glibc za podršku sistemskim pozivima u njoj dok koristi jezik C. Postoji i mnogo više načina korištenja sistemskih poziva. U ovom vodiču za članak raspravljat ćemo o otvorenom sistemskom pozivu u Linux sustavu. Poziv Otvoreni sustav korišten je za brzo otvaranje datoteke navedene u putanji. Obavijestio nas je o deskriptoru datoteke datoteke koju je stvorio korisnik. Koristili smo Ubuntu 20.04 za neki praktični poziv otvorenog sustava.

Instalirajte knjižnice

C jezik zahtijeva da se kao preduvjeti instaliraju neki dodatni bibliotečki paketi. Prije svega, morate instalirati paket manpages-dev kako biste provjerili informacije o sistemskim pozivima. Otvorite terminal naredbenog retka iz područja aktivnosti i izvršite donje upute za instaliranje stranica.







$ sudo apt instalirajte stranice-dev



Rezultat dovršetka instalacije dat je u nastavku.







Sada ćemo provjeriti postoji li otvoreni sistemski poziv pomoću naredbe man kao što je dolje.

$ čovjek2otvorena



Izlazna stranica za otvoreni sistemski poziv prikazana je u nastavku. Možete vidjeti dodatne informacije u vezi s tim. Pritisnite gumb q za izlaz.

Gornja sintaksa prikazuje prve tri linije potrebnih knjižnica koje treba dodati za sistemske pozive. Za poziv otvorenog sustava dostupne su tri sintakse. Prva sintaksa prikazuje naziv puta, koji je naziv datoteke za otvaranje. Drugi parametar, zastavice, prikazuje način rada datoteke, npr. Čitanje ili pisanje. Druga se sintaksa može koristiti kada datoteka ne postoji. Parametarski način rada koristi se za prikaz privilegija u datoteci.

Sada je vrijeme za instaliranje GCC prevoditelja za otklanjanje pogrešaka C koda u distribuciji Ubuntu 20.04 Linux. Da biste to učinili, izvedite donju uputu u ljusci.

$ sudo apt install gcc

Za nastavak instaliranja GCC prevoditelja potrebno je dodirnuti Y, u protivnom pritisnite gumb n da biste zatvorili instalaciju. Zato pritisnite gumb y i pritisnite Enter za nastavak.

Rezultat dovršetka prikazan je u nastavku.

Primjer 01

Pogledajmo vrlo jednostavan primjer otvorenog sistemskog poziva. Prvo otvorite naredbenu ljusku i izradite novu tekstualnu datoteku test.txt pomoću jednostavne naredbe na dodir na sljedeći način:

$dodirtest.txt

Ručno mu dodajte neke podatke. Podatke u datoteci možete vidjeti pomoću naredbe cat u nastavku.

$mačkatest.txt

Sada napravimo novu C datoteku pomoću nano naredbe u ljusci, kao što je prikazano u nastavku.

$nanonovo.c

Otvorit će se donja GNU nano datoteka. Morate unijeti donji kôd jezika C u njega. Možete vidjeti da smo dodali potrebne bibliotečke pakete za pravilno izvršavanje C koda. Nakon toga smo definirali glavnu funkciju za rad na pozivu otvorenog sustava. Deklarirali smo dvije cjelobrojne varijable. Varijabla n koristi se za brojanje vrijednosti međuspremnika, a fd za deskriptor datoteke. Oglasili smo niz me uspremnika tipa znakova kao buf veličine 50. Otvoreni sistemski poziv korišten je za čitanje sadržaja iz datoteke test.txt i vraćanje u deskriptor datoteke. O_RDONLY je korišten u svrhe čitanja. Sljedeći redak prikazuje sistemski poziv čitanja za prikupljanje 10 bajtova iz međuspremnika i vraćanje u cijeli broj n. Također, naredba write je korištena za upisivanje sadržaja ili podataka u međuspremnik u deskriptor datoteke, što je izlazni zaslon U našem slučaju upravo sada. Spremite ovu datoteku pomoću Ctrl+S i zatvorite je naredbom Ctrl+X.

#uključi
#uključi
#uključi
#uključi

intglavni()
{
intn,F D;
charbuf[pedeset];
F D=otvorena(test.txt,O_RDONLY);
n=čitati(F D,buf, 10);
pisati(1 ,buf, 10);

Prvo sastavimo C kôd za otvoreni sistemski poziv pomoću naredbe gcc u nastavku.

$gccnovo.c

Sada je vrijeme da provjerite izlaz za C kod za otvoreni sistemski poziv. Koristimo donju naredbu a.out u ljusci. Izlaz prikazuje 10 bajta iz sadržaja datoteke test.txt.

$./do.van

Uzmimo još jedan primjer za upisivanje sadržaja jedne datoteke u drugu datoteku pomoću poziva sustava Open. Za stvaranje nove C datoteke pomoću nano naredbe kako je dolje.

$ nano novo.c

Zato uzmite isti kod s manjom promjenom. U kodu smo definirali još jedan deskriptor datoteke kao fd1. Svi su kodovi isti, osim jednog dodatnog retka. Drugi zadnji redak koda koristio je otvoreni sistemski poziv za stvaranje nove datoteke s imenom target koristeći O_CREAT i način rada, samo za pisanje kao O_WRONLY. 0642 prikazuje privilegije dodijeljene ovoj datoteci. I datoteka je vraćena u novi deskriptor datoteke. Sljedeći redak prikazuje naredbu za upisivanje bajtova sadržaja u međuspremnik prema opisu datoteke. Spremite datoteku i zatvorite je.

Izvršite naredbu gcc compile za otklanjanje pogrešaka u datoteci jezika C.

$ gcc novo.c

Da biste prikazali izlaz C koda, pokušajte s a.out uputom u ljusci kao što je dolje. Nema izlaza jer je izlaz preusmjeren na novostvoreni cilj datoteke.

$./do.van

Provjerimo podatke o cilju datoteke pomoću naredbe cat. Izlaz pokazuje da datoteka ima 20 bajtova.

$ cat cat

Zaključak

U gornjem vodiču objasnili smo vam da koristite otvoreni sistemski poziv na jeziku C pomoću gcc kompajlera. Uz pomoć različitih primjera objašnjenih u ovom vodiču, provest ćete željeni program.