Szintaxis:
int poll (struct pollfd * ufds, előjel nélküli int nfds, int timeout);Az „fds” argumentum határozza meg az ellenőrizni kívánt dokumentumleírókat, valamint az egyes esetek szempontjából jelentős eseményeket. Ez egy olyan tömbre való hivatkozás, amely minden nyitott dokumentumleíróhoz egy elemet tartalmaz. A tömb elemei pollfd struktúrák, ahol az fd egy nyitott dokumentumleírót jelöl, és az összes eseményt és újbóli eseményt, általában bitmaszknak hívják, a megfelelő eseményzászlók összevonásával hozzák létre:
POLLIN:
A kiemelt fontosságú adatokon kívül az információs adatok ki is olvashatók anélkül, hogy akár blokkolódnának is. Továbbá, ha a válaszüzenet nulla méretű, akkor ez a jelzőjel a STREAMS számára generálódik a reventsben. Ennek a zászlónak jelentése ugyanaz, mint a POLLRDNORM | POLLRDBAND.
POLLRDNORM:
Megszakítás nélkül a hétköznapi információi adatok kiolvashatók. Az elsődleges prioritású 0. sávra vonatkozó információk a STREAMS megszakítása ellenére is olvashatók. És ha a válaszüzenet nulla hosszúságú, akkor ez a jel újból bekövetkezik.
POLLRDBAND:
Az elsődleges aggodalomra vonatkozó adatok kiolvasása annak ellenére történik, hogy késéseket okoznak. A nulla feletti prioritási tartományokról szóló információk a STREAMS-ba való beavatkozás ellenére is olvashatók. Ha pedig az üzenetválasz nulla időtartamú, akkor ezt a jelet fordulatszámban továbbítják.
POLLPRI:
A dokumentumleírónál lehet néhány kivétel. A kiemelt fontosságú információkat le lehet tiltani a blokkolástól. Továbbá, ha a válasz nulla időtartamú, akkor ezt a jelet az ÁRAMOK számára terjesztik a fordulóban.
SZennyeződés:
A felhasználók kiírhatják a POLLOUT zászlóval. A leállástól eltekintve tipikus adatok rögzíthetők. A 0. preferencia sávra vonatkozó információk rögzíthetők a STREAMS megszakítása ellenére is.
POLLWRNORM:
Ugyanúgy működik, mint a POLLOUT.
FÉNYKAPCSOLÓ:
A legfontosabb prioritású adatokat ezzel a zászlóval írjuk. A STREAMS nulla feletti preferencia tartományokra vonatkozó információk blokkolás nélkül rögzíthetők. Ez a tevékenység csak azokat a sávokat értékeli, amelyekre már legalább egyszer írtak, mivel a STREAM-ra nem írtak preferencia sávot.
POLLERR:
Ez hibaállapot, és csak akkor fordul elő, ha a rendszer vagy a folyamat problémába ütközik. Ez a szimbólum csak a megújuló bitmaszkra vonatkozik; a tevékenység résztvevője figyelmen kívül hagyja.
SZENNYEZÉS:
Megadja a letiltási feltételt, és csak akkor fordul elő, ha a rendszerhez való csatlakozást letiltották. Ez az előfordulás és a POLLOUT egyaránt kompatibilis; ha felmerült egy probléma, soha nem fog folyamot írni.
POLLNVAL:
Ez az érvénytelen vagy szokatlan kérést határozza meg. Ez a tevékenység mindazonáltal nem zárja ki a POLLIN, POLLRDNORM, POLLRDBAND vagy POLLPRI részvételt. Ez a szimbólum csak a megújuló bitmaszkra vonatkozik; az esemény résztvevője figyelmen kívül hagyja.
Példa a szavazó rendszer hívására:
Ugyanazon szerepet tölti be, mint a select (), bár nagyobb léptékben. A Poll () bármely Glibc alapú Linux gépen elérhető. A régebbi kernelek a C () könyvtárban a poll () és a select () kifejezéseket utánozzák. A programoknak azonban nem kell különbséget tenniük. Íme egy példa a közvélemény-kutatás () érzésére. Tehát először nyissa meg a parancssori terminált a „Ctrl + Alt + T billentyűparancs segítségével.”Megnyitás után létre kell hoznunk egy C típusú fájlt, amelybe C típusú kódot írunk. Ehhez a nano szerkesztőt használtuk. Tehát próbálja ki az alábbi nano parancsot a terminálban a C fájl nevével együtt.
$ nano új.c
Most megnyílt a „new” C fájl nano szerkesztője. Először be kell foglalnia néhány könyvtárat, különösen a „közvélemény-kutatást.h ”könyvtár. A fő függvény úgy lett megadva, hogy egy egész visszatérési típussal rendelkezik, paraméterében két argumentum van, pl.g., argc és argv. Ezután deklaráltuk az fd fájlleírót és a „buf.”Ezt követően egy struktúra típusú változót definiáltunk, amelynek neve pollfd pfds, 2-es méretű. Ezután egy nyílt rendszerhívást deklaráltunk, hogy megszerezzük az értéket a karaktertípus tömbből, és hozzárendeljük a képen látható „fd” fájlleíróhoz. Míg a fájlleíró „1”, a „pfds” struktúra néhány adattal frissül benne a POLLIN jelző használatával. Most definiáltunk egy poll () rendszerhívás funkciót. A poll () rendszerhívás első paramétere a kódban használt ufds struktúra. A második paraméter meghatározza a pollfd struktúrák teljes számát az fds sorozatban.
Az utolsó paraméter pedig a lekérdezési rendszer hívásának egész típusú időtúllépési értékét mutatja. Ha a pfds revent és 0 értékkel egészül ki, akkor az olvasott rendszerhívás kiolvassa az adatokat a pufferből. Az „if” utasítással ellenőrizzük, hogy az olvasott utasítás visszaadta-e az egész értékét, és írjon-e adatokat. Ha az „pfds” struktúra az „1” pozícióban van, miközben az adatokat megismétli és beírja, az olvasott rendszerhívás a puffer adatait használja az „fd” leíró használata közben.
Mentsd el az újat.c fájlt, és zárja be. Most fordítsa le a gcc fordítóval.
$ gcc new.c
A kód futtatása közben felvettünk egy adatot egy felmérésbe, amelyet fel kell olvasni, és az adatokat újra írja, az alábbi kimenethez hasonlóan.
$ ./ a.ki
Következtetés:
Ebben a fent leírt cikkben megvitattuk a poll () rendszerhívást C nyelven. Remélem, hogy ezt az oktatóanyagot hasznosnak és hatékonynak találja a Linux operációs rendszeren való munka közben.