C Programiranje

Kako se koristi sistemski poziv za ankete u C

Kako se koristi sistemski poziv za ankete u C
Značajka poll () omogućuje programima multipleksiranje unosa i izlaza kroz niz deskriptora datoteka. Drugim riječima, sistemski poziv poll () analogan je sistemskom pozivu select () u radu jer drži vatru za jedan od nekoliko deskriptora datoteka postajući dostupan za I / O. Anketa () ispituje dodijeljeni deskriptor dokumenta radi popisa događaja (događaja) u incidentima za svaki element niza koji na njega upućuju deskriptori datoteka. Metoda poll () može odrediti kojem će od deskriptora datoteka program čitati ili upisivati ​​detalje koji su vidjeli ove incidente. U ovom ćemo vodiču koristiti Ubuntu 20.04 kako biste razumjeli koncept poll () sistemskog poziva na Linuxu korak po korak.

Sintaksa:

int anketa (struct pollfd * ufds, unsigned int nfds, int timeout);

Argument "fds" određuje deskriptore dokumenata koje treba provjeriti, kao i incidente značajne za svaki. To je referenca na niz koji ima jedan element za svaki deskriptor otvorenog dokumenta. Elementi niza su strukture pollfd, gdje fd označava otvoreni deskriptor dokumenta, a sva zbivanja i događaji, obično zvani bitmaske, generiraju se stvaranjem spajanja odgovarajućih zastavica događaja:

POLLIN:

Osim visokoprioritetnih podataka, informativni se podaci mogu čitati bez da su čak i blokirani. Također, ako je odgovor odgovora nula veličina, ovaj signal zastavice generira se za STREAMS u reventima. Ova zastava ima isto značenje kao POLLRDNORM | POLLRDBAND.

POLLRDNORM:

Bez prekida mogu se očitavati uobičajeni informativni podaci. Informacije o primarnom prioritetnom opsegu 0 mogu se čitati unatoč prekidu za STREAMS. A ako je odgovor odgovora nulte duljine, ovaj se signal generira u ponovnim događajima.

POLLRDBAND:

Podaci o primarnoj brizi očitat će se unatoč uzrokovanju kašnjenja. Informacije o rasponima prioriteta većim od nule mogu se čitati unatoč uplitanju u STREAMS. A ako je odgovor poruke nultog trajanja, ovaj se signal širi u reventima.

POLLPRI:

Možda postoje neke iznimke od deskriptora dokumenta. Informacije s glavnim prioritetom mogu se čitati bez blokiranja. Također, ako je odgovor nula trajanja, ovaj se signal širi za STREAMS u reventima.

ANKETA:

Korisnici mogu ispisati pomoću oznake POLLOUT. Lišeni zaustavljanja mogu se evidentirati tipični podaci. Informacije o preferencijskom opsegu 0 mogu se snimiti unatoč prekidu u STREAMS-u.

ANALIZA ANKETE:

Djeluje isto kao i POLLOUT.

ANKETAR:

Podaci s najviše prioriteta bit će zapisani pomoću ove zastavice. Informacije o rasponima preferencija većim od nule za STREAMS mogu se snimati bez blokiranja. Ova aktivnost procjenjuje samo opsege na koje je već zapisano najmanje jednom budući da na ovom STREAM-u nije napisan nijedan opseg preferencija.

POLLERR:

To je stanje pogreške i događa se samo kada sustav ili protok naiđe na problem. Ovaj se simbol odnosi samo na zaštitnu bitmasku; tijekom sudionika aktivnosti se zanemaruje.

POLLHUP:

Određuje stanje prekida i javlja se samo kada je veza sa sustavom onemogućena. Ova pojava i ANALIZA jednako su kompatibilni; nakon što se pojavi problem, tok se nikada neće napisati.

POLNVAL:

Ovo navodi nevažeći ili neobičan zahtjev. Ipak, ova aktivnost ne isključuje sudjelovanje u POLLINU, POLLRDNORMU, POLLRDBANDU ili POLLPRIU. Ovaj se simbol odnosi samo na zaštitnu bitmasku; previđa se kod sudionika događaja.

Primjer pozivanja na sustav ankete:

Obavlja istu ulogu kao select (), iako u većem opsegu. Anketa () dostupna je na bilo kojem Linux računalu sa sustavom Glibc. Starija jezgra oponašaju anketu () s select () u C biblioteci. Međutim, programi ne bi trebali razlikovati. Evo primjera osjećaja ankete (). Dakle, prvo otvorite terminal naredbenog retka pomoću tipke prečaca „Ctrl + Alt + T.”Nakon otvaranja moramo stvoriti datoteku tipa C da bismo u nju napisali kôd vrste C. Za to koristimo nano editor. Pa isprobajte donju nano naredbu u terminalu zajedno s nazivom datoteke C.

$ nano novo.c

Sada je otvoren nano uređivač za datoteku C "new". U nju prvo morate uključiti neke knjižnice, posebno „anketu.h ”knjižnica. Specificirano je da glavna funkcija ima cijeli broj povratnog tipa s dva argumenta u svom parametru, npr.g., argc i argv. Tada smo proglasili deskriptor datoteke fd i niz znakova s ​​imenom „buf.”Nakon toga definirana je varijabla tipa strukture koja se naziva pollfd pfds veličine 2. Dalje, proglašen je otvoreni sistemski poziv za dobivanje vrijednosti iz niza znakova i dodjeljivanje deskriptoru datoteke "fd" kao što se vidi na slici. Dok je deskriptor datoteke "1", struktura "pfds" bit će ažurirana s nekim podacima u njoj koristeći oznaku POLLIN unutar nje. Sada smo definirali funkciju sistemskog poziva poll (). Prvi parametar sistemskog poziva poll () je struktura ufds koja se koristi u kodu. Drugi parametar specificira ukupan broj pollfd struktura u fds seriji.

I posljednji parametar prikazuje vrijednost vremenskog ograničenja cijelog broja za sistemski poziv ankete. Ako su pfds otkriveni i dodani s vrijednošću 0, tada će sistemski poziv za čitanje očitati podatke iz međuspremnika. Izraz "ako" upotrijebit će se za provjeru je li očitanje izjave vratilo svoju vrijednost na cijeli broj i upisalo podatke. Ako je struktura „pfds“ na poziciji „1“ tijekom uklanjanja i unosa podataka, sistemski poziv za čitanje koristit će podatke iz međuspremnika dok se koristi deskriptor „fd“.

Spremite novo.c datoteku i zatvorite je. Sada ga kompajlirajte pomoću gcc kompajlera.

$ gcc novo.c

Tijekom izvršavanja ovog koda dodali smo podatke u anketu za čitanje i oni ponovo zapisuju podatke kao u donjem izlazu.

$ ./ a.van

Zaključak:

U ovom gore opisanom članku razgovarali smo o sistemskom pozivu poll () na jeziku C. Nadam se da će vam ovaj vodič biti koristan i učinkovit tijekom rada na Linux operativnom sustavu.

Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...
10 najboljih igara za igranje na Ubuntuu
Windows platforma bila je jedna od dominantnih platformi za igre zbog ogromnog postotka igara koje se danas razvijaju kako bi podržavale Windows. Može...
5 najboljih arkadnih igara za Linux
U današnje vrijeme računala su ozbiljni strojevi koji se koriste za igre na sreću. Ako ne uspijete dobiti novi visoki rezultat, znat ćete na što misli...