C Programiranje

Kako se koristi Odabir sistemskog poziva u C

Kako se koristi Odabir sistemskog poziva u C
Sistemski poziv select () omogućuje sustavu praćenje nekoliko deskriptora datoteka. Dakle, odabrani sistemski poziv čeka da jedan od deskriptora ili cjelina ispadne "spreman" za određenu vrstu I / O aktivnosti (npr.g., unos moguć). Ako se naknadni I / O postupak (npr.g., čitanje (2)) može se izvršiti unatoč blokiranju, smatra se da je deskriptor datoteke u mogućnosti. Metoda select () opisuje je li opisnik dokumenta dostupan za čitanje, je li pripremljen za pisanje ili je u stanju iznimke. Pretpostavimo da je navedena situacija lažna za potpuno navedene deskriptore datoteka. U tom slučaju, sistemski pozivni blokovi select () prije spomenutih okolnosti vrijede za najmanje jedan od navedenih deskriptora dokumenta, jednak navedenom intervalu isteka vremena.

Primjer za odabir sistemskog poziva:

Imajmo jednostavan primjer da provjerimo rad odabranog sistemskog poziva. Otvorite ljusku naredbenog retka pomoću "Ctrl + Alt + T.”Nakon otvaranja terminala, provjerite je li na vašem sustavu instaliran kompajler za jezik C jer kod bez njega neće raditi. Ako ga nemate, isprobajte donju naredbu da biste to učinili.

$ sudo apt instaliraj gcc

Ako želite vidjeti kako sistemski poziv Linux select funkcionira, na vašem sustavu morate instalirati paket manpages-dev prema naredbi u nastavku. Za nastavak napišite svoju korisničku lozinku.

$ sudo apt install manpages-dev

Sintaksu i rad odabranog sistemskog poziva možete vidjeti pomoću naredbe "man" u nastavku.

$ man 2 odaberi

Izlazna man stranica za odabrani sistemski poziv prikazana je u nastavku. Napustite ga pritiskom na tipku "q".

Standardni direktoriji, terminali naredbe ljuske i pseudo-terminalne aplikacije, dokumenti usmjereni na STREAMS, FIFO-i, uključujući cijevi, podržani su modulom select (). Aktivnost select () na deskriptorima dokumenata koji se odnose na ove druge formate datoteka je nepoznata. Dakle, ispod je objašnjenje sistemskog poziva Select.

Opis sintakse prikazan na gornjoj slici opisan je u nastavku.

Iznad je knjižnica koju treba uključiti u C kod tijekom korištenja odabranog sistemskog poziva. Ako nije uključen, kôd ne radi.

The nfds naredba definira skup deskriptora datoteke koji će se procijeniti. Metoda select () provjerava deskriptore datoteka između 0 i nfds-1.

Dok readfds nije null, odnosi se na niz oblika fd_set koji definira koji se opisi dokumenata trebaju testirati na spremnost za čitanje na ulazu i koji opisnici dokumenata trebaju biti postavljeni za čitanje na izlazu.

Kada writefds parametar nije prazan, odnosi se na entitet obrasca fd_set koji definira koji opisnici dokumenta trebaju biti testirani na spremnost za upis na ulaz. Opise dokumenata treba pripremiti za sastavljanje na izlazu.

Dok errorfds parametar nije prazan, odnosi se na objekt vrste fd_set, koji određuje koji bi se deskriptori dokumenta trebali testirati na čekanje stanja pogreške na ulazu; također, deskriptori dokumenata trebaju biti provjereni na izlazu.

Parametri readfds, writefds i errorfds ažuriraju se nakon završetka kako bi označili da su deskriptori dokumenata pripremljeni za čitanje, u potpunosti pripremljeni za pisanje ili čak imaju stanje izuzeća, u skladu s tim. Ako je sljedeći bit učvršćen na ulazu i relevantna situacija vrijedi za svaki opis datoteke malo ispod nfds, sljedeći bit bit će postavljen na učinkovito postignuće.

Iako parametar timeout zapravo nije prazan, dovodi do strukture timeval entiteta koji određuje vrhunsko vrijeme za zadržavanje vatre da bi izbor završio. Select () ne ometa ako takav parametar vremenskog ograničenja dovede do vremenskog objekta strukture s 0 elemenata. Select () se zaustavlja osim ako pojava dopušta dohvaćanje jednog od filtara s istinitim (ne-nultim) rezultatom, bez obzira je li iskaz vremenskog ograničenja prazna referenca. Select () uspješno postiže i proizvodi 0 kad se završi razdoblje čekanja i prije nego što se dogodi, što može zahtijevati da se jedna od nekoliko maski prilagodi na vrijednost koja nije nula.

Ova makronaredba uklanja zbirku (briše sve deskriptore dokumenata). Može se koristiti kao prvi potez u inicijalizaciji zbirke deskriptora dokumenta.

Deskriptor dokumenta fd dodaje se u zbirku ovom makronaredbom. Korištenje deskriptora dokumenta u zbirci koja je već postojala ne bi bilo operativno i stoga ne bi rezultiralo pogreškom izuzeća.

Ovaj makronaredba uklanja deskriptor dokumenta fd iz zbirke. Deskriptor datoteke uklonjen iz zbirke koja ne postoji ne radi i stoga ne rezultira iznimkom.

Sistemski poziv select () mijenja podatke ili podatke zbirki prema gore spomenutim pravilima. Makronaredba FD ISSET () može se odbaciti pozivanjem select () da biste vidjeli ostaje li opisnik dokumenta dostupan u zbirci.

Stvorimo novu datoteku tipa C pod nazivom „novo.c ”kao u nastavku.

$ nano novo.c

Otvoren je uređivač GNU. U njega zapišite donji kod. Kôd sadrži zaglavlja, glavnu funkciju s nekim deskriptorima datoteka kako je prethodno razrađeno. Sadrži i strukturu za vrijednost vremenskog intervala. Zatim smo upotrijebili odabrani sistemski poziv za provjeru pogreške u izjavi "ako". Pritisnite "Ctrl + S" da biste spremili ovaj kôd i "Ctrl + X" da biste napustili uređivač.

Sada kompajlirajte kod pomoću upute "gcc".

$ gcc novo.c

Pokrenite kôd i nemojte dodavati nikakve unose. Na izlazu će se reći „odaberite timeout."

$ ./ a.van

Ponovno pokrenite kôd i unesite neki ulaz u terminal, npr.g., “Aqsa."Izlazit će da su" podaci dostupni."

Zaključak:

Implementirali smo odabrani sistemski poziv na Ubuntu 20.04 Linux sustav. Kôd bi trebao raditi na svim distribucijama Linuxa jednako i pravilno. Nadam se da će vam ovaj članak biti lako implementirati i razumjeti.

Dodajte geste miša u sustav Windows 10 pomoću ovih besplatnih alata
Posljednjih godina računala i operativni sustavi uvelike su se razvili. Bilo je vrijeme kada su korisnici morali koristiti naredbe za navigaciju kroz ...
Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...
WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...