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.