C Programiranje

Kako koristiti otvoreni sistemski poziv u C

Kako koristiti otvoreni sistemski poziv u C

Sistemski pozivi koriste se u distribucijama Linuxa kako bi se osigurao ulaz unutar Linux OS-a i programa. Linux operativni sustav koristi knjižnicu Glibc za podršku sistemskim pozivima u njemu dok koristi jezik C. Puno je više načina za korištenje i sistemskih poziva. U ovom vodiču za članak razgovarat ćemo o otvorenom sistemskom pozivu u Linux sustavu. Sistemski poziv "Otvori" korišten je za brzo otvaranje datoteke navedene u stazi. Obavijestio nas je o opisu datoteke datoteke koju je kreirao korisnik. Koristimo Ubuntu 20.04 kako biste dobili praktični sustav „Otvoreni“ sistemski poziv.

Instalirajte knjižnice

Jezik C zahtijeva instaliranje dodatnih paketa biblioteke kao preduvjeta. Prije svega, morate instalirati paket manpages-dev da biste provjerili informacije u vezi sa sistemskim pozivima. Otvorite terminal naredbenog retka iz područja aktivnosti i izvršite donju uputu za instalaciju stranica.

$ sudo apt install manpages-dev

Izlaz za završetak instalacije dan je u nastavku.

Sada ćemo provjeriti ima li otvorenog sistemskog poziva pomoću naredbe "man" kao što je prikazano u nastavku.

$ čovjek 2 otvoren

Izlazna man stranica za sistemski poziv "Otvoreni" prikazana je u nastavku. Možete vidjeti dodatne informacije u vezi s tim. Pritisnite gumb "q" da biste izašli iz njega.

Gornja sintaksa prikazuje prva tri retka potrebnih knjižnica koje se dodaju za sistemske pozive. Za otvoreni sistemski poziv dostupne su tri sintakse. Prva sintaksa prikazuje "naziv puta", što je naziv datoteke koju treba otvoriti. Drugi parametar, "zastavice", prikazuje način datoteke, npr.g., čitati ili pisati. Druga sintaksa može se koristiti kada datoteka ne postoji. Način parametra koristi se za prikaz privilegija na datoteci.

Sada je vrijeme da instalirate GCC kompajler za ispravljanje pogrešaka C koda u Ubuntu 20.04 Distribucija Linuxa. Da biste to učinili, u ljusci izvršite donju uputu.

$ sudo apt instalirati gcc

Potrebno je da dodirnete "Y" da biste nastavili instalirati GCC kompajler, u suprotnom pritisnite gumb "n" da biste zatvorili instalaciju. Zato pritisnite gumb "y" i pritisnite Enter za nastavak.

Izlaz za završetak prikazan je u nastavku.

Primjer 01

Pogledajmo vrlo jednostavan primjer "otvorenog" sistemskog poziva. Prvo otvorite naredbenu ljusku i stvorite novu testnu datoteku tekstualne datoteke.txt ”pomoću naredbe jednostavnog dodira kako slijedi:

$ dodirni test.txt

Dodajte mu neke podatke ručno. Možete vidjeti podatke u datoteci pomoću donje naredbe cat.

$ mačji test.txt

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

$ nano novo.c

Otvorit će se donja GNU nano datoteka. U njega morate upisati donji kod jezika C. Vidite da smo dodali potrebne knjižnične pakete da bi se C kod pravilno izveo. Nakon toga definirali smo glavnu funkciju za rad na otvorenom sistemskom pozivu. Proglasili smo dvije cjelobrojne varijable. Varijabla "n" koristi se za brojanje vrijednosti međuspremnika, a "fd" za deskriptor datoteke. Detektirali smo niz znakova tipa znakova kao "buf" veličine 50. Otvoreni sistemski poziv korišten je za čitanje sadržaja iz datoteke „test“.txt ”i vratite ga u deskriptor datoteke. "O_RDONLY" je korišten u svrhe čitanja. Sljedeći redak prikazuje sistemski poziv za čitanje za prikupljanje 10 bajtova iz međuspremnika i vraćanje u cijeli broj n. Također, naredba write korištena je za upisivanje podataka sadržaja ili međuspremnika u deskriptor datoteke, što je izlazni zaslon. U našem slučaju upravo sada. Spremite ovu datoteku pomoću Ctrl + S i zatvorite je pomoću naredbe Ctrl + X.

#include
#include
#include
#include
int main ()

int n, fd;
char buf [50];
fd = otvoren („test.txt ", O_RDONLY);
n = očitano (fd, buf, 10);
write (1, buf, 10);

Ajmo prvo kompajlirati C kod za otvoreni sistemski poziv pomoću naredbe gcc u nastavku.

$ gcc novo.c

Sada je vrijeme da provjerimo izlaz za C kod za otvoreni sistemski poziv. Koristimo dolje a.out naredba u ljusci. Izlaz prikazuje 10 bajtova iz sadržaja datoteke "test".txt ".

$ ./ a.van

Uzmimo drugi primjer zapisivanja sadržaja jedne datoteke u drugu pomoću otvorenog sistemskog poziva. Da biste stvorili novu C datoteku pomoću nano naredbe kao što je prikazano u nastavku.

$ nano novo.c

Dakle, uzmite isti kod s manjom promjenom na njemu. U kôdu smo definirali drugi deskriptor datoteke kao “fd1”. Sav je kod isti, osim jednog dodatnog retka. Drugi zadnji redak koda koristio je otvoreni sistemski poziv za stvaranje nove datoteke pod nazivom "target" pomoću O_CREAT i načina, samo za pisanje kao O_WRONLY. 0642 prikazuje povlastice dodijeljene ovoj datoteci. I datoteka je vraćena u novi deskriptor datoteke. Sljedeći je redak prikazao naredbu za upisivanje bajtova sadržaja u međuspremnik prema njegovom 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, isprobajte a.izvadite upute u ljusci kao dolje. Nema rezultata jer je izlaz preusmjeren na novonastalu datoteku „target“.

$ ./ a.van

Provjerimo podatke cilja datoteke pomoću naredbe cat. Izlaz pokazuje da datoteka sadrži 20 bajtova.

$ mačka meta

Zaključak

U gornjem uputstvu objasnili smo vam da koristite otvoreni sistemski poziv na jeziku C pomoću kompajlera gcc. Uz pomoć različitih primjera objašnjenih u ovom vodiču, vodit ćete se do provedbe željenog programa.

Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...
Instalirajte najnoviji Dolphin Emulator za Gamecube i Wii na Linux
Dolphin Emulator omogućuje vam igranje odabranih Gamecube i Wii igara na Linux osobnim računalima (PC). Dolphin Emulator je slobodno dostupan i emula...
Kako koristiti GameConqueror Cheat Engine u Linuxu
Članak pokriva vodič o korištenju GameConqueror varalice u Linuxu. Mnogi korisnici koji igraju igre na sustavu Windows često koriste aplikaciju "Cheat...