C Programovanie

Ako používať systémové volanie hlasovania v C

Ako používať systémové volanie hlasovania v C
Funkcia poll () umožňuje programom multiplexovať vstup a výstup prostredníctvom série deskriptorov súborov. Inými slovami, systémové volanie poll () je obdobou systémového volania select () pri práci, pretože udržiava oheň pre jeden z niekoľkých deskriptorov súborov sprístupnením pre I / O. Poll () skúma priradený deskriptor dokumentu na zaznamenanie udalostí v incidentoch ku všetkým prvkom poľa, ktoré na ne smerujú, pomocou deskriptorov súborov. Metóda poll () môže určiť, z ktorého deskriptora súboru program bude čítať alebo zapisovať podrobnosti, ktoré tieto incidenty videli. V tejto príručke budeme používať Ubuntu 20.04 porozumieť konceptu systémového volania poll () v systéme Linux krok za krokom.

Syntax:

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

Argument „fds“ určuje deskriptory dokumentov, ktoré sa majú skontrolovať, ako aj incidencie dôležitosti každého z nich. Je to odkaz na pole, ktoré má pre každý otvorený deskriptor dokumentu jeden prvok. Prvky poľa sú štruktúry pollfd, kde fd označuje otvorený deskriptor dokumentu a všetky udalosti a opakované udalosti, zvyčajne nazývané bitové masky, sú generované vytvorením zlúčenia zodpovedajúcich príznakov udalostí:

ANKETA:

Okrem údajov s vysokou prioritou je možné načítať informačné údaje, ktoré nemusia byť blokované. Taktiež, ak má odpoveďová správa nulové veľkosti, tento príznakový signál sa generuje pre STREAMS v príjmoch. Tento príznak má rovnaký význam ako POLLRDNORM | POLLRDBAND.

POLLRDNORM:

Bežné informačné údaje je možné načítať bez prerušenia. Informácie o pásme 0 s prioritnou prioritou sa dajú prečítať napriek prerušeniu pre STREAMS. A ak má správa s odpoveďou nulovú dĺžku, tento signál sa generuje v opakovaných udalostiach.

POLLRDBAND:

Údaje primárneho záujmu sa načítajú napriek tomu, že spôsobujú meškanie. Informácie o rozsahu priorít väčších ako nula sa dajú čítať aj napriek zásahu do STREAMS. A ak je odozva správy nulová, tento signál sa šíri v príjmoch.

POLLPRI:

Z deskriptora dokumentov môžu existovať určité výnimky. Informácie s najvyššou prioritou je možné čítať bez blokovania. Taktiež, ak je odozva nulová, tento signál sa šíri pre STREAMS v príjmoch.

POLLOUT:

Používatelia môžu odpisovať pomocou príznaku POLLOUT. Bez zastavenia je možné zaznamenávať typické údaje. Informácie o preferenčnom pásme 0 je možné zaznamenať aj napriek prerušeniu v STREAMS.

POLLWRNORM:

Funguje to rovnako ako POLLOUT.

POLLWRBAND:

Pomocou tohto príznaku sa zapíšu najdôležitejšie údaje. Informácie o rozsahu preferencií väčších ako nula pre STREAMS je možné zaznamenávať bez blokovania. Táto aktivita hodnotí iba pásma, ktoré už boli zapísané minimálne raz, pretože na tomto STREAME nebolo napísané žiadne preferenčné pásmo.

POLLERR:

Je to chybový stav a vyskytuje sa iba vtedy, keď systém alebo tok narazil na problém. Tento symbol platí iba pre bitovú masku revents; v rámci celého účastníka aktivít je prehliadaný.

POLLHUP:

Určuje podmienku zavesenia a vyskytuje sa iba vtedy, keď je pripojenie k systému zakázané. Tento výskyt a POLLOUT sú rovnako kompatibilné; akonáhle sa vyskytne problém, stream sa nikdy nezapíše.

POLLNVAL:

Toto určuje neplatnú alebo neobvyklú požiadavku. Táto aktivita napriek tomu nevylučuje účasť v POLLIN, POLLRDNORM, POLLRDBAND alebo POLLPRI. Tento symbol platí iba pre bitovú masku revents; u účastníka podujatia je prehliadaný.

Príklad systémového volania hlasovania:

Vykonáva rovnakú úlohu ako select (), aj keď vo väčšom meradle. Anketa () je k dispozícii na ľubovoľnom stroji Linux založenom na Glibc. Staršie jadrá napodobňujú poll () s select () v celej knižnici C. Programy by však nemuseli rozlišovať. Tu je príklad toho, ako sa cíti anketa (). Takže najskôr otvorte terminál príkazového riadku pomocou klávesovej skratky „Ctrl + Alt + T.„Po otvorení musíme vytvoriť súbor typu C, do ktorého napíšeme kód typu C. Na tento účel používame nano editor. Vyskúšajte teda nasledujúci príkaz nano v termináli spolu s názvom súboru C.

$ nano nové.c

Teraz bol otvorený nano editor pre súbor C „nový“. Najprv do nej musíte zahrnúť niektoré knižnice, najmä „anketu“.h “knižnica. Bolo určené, že hlavná funkcia má celočíselný návratový typ s dvoma argumentmi v parametri, napr.g., argc a argv. Potom sme deklarovali deskriptor súborov fd a pole typu znaku s názvom „buf.„Potom bola definovaná premenná typu štruktúry s názvom pollfd pfds veľkosti 2. Ďalej bolo vyhlásené otvorené systémové volanie, aby sa získala hodnota z poľa typu znaku a priradila sa k deskriptoru súboru „fd“, ako je vidieť na obrázku. Zatiaľ čo deskriptor súborov je „1“, štruktúra „pfds“ sa aktualizuje pomocou niektorých údajov v ňom pomocou príznaku POLLIN v ňom. Teraz sme definovali funkciu systémového volania poll (). Prvým parametrom systémového volania poll () je štruktúra ufds použitá v kóde. Druhý parameter určuje celkový počet štruktúr pollfd v sérii fds.

A posledný parameter zobrazuje hodnotu časového limitu celého čísla pre volanie systému ankety. Ak sú hodnoty pfds zarátané a pridané s hodnotou 0, potom načítané systémové volanie načíta údaje z medzipamäte. Príkaz „if“ sa použije na kontrolu, či príkaz na čítanie vrátil svoju hodnotu na celé číslo, a na zápis údajov. Ak je štruktúra „pfds“ v polohe „1“ počas reventácie a zadávania údajov, načítané systémové volanie použije údaje z medzipamäte pri použití deskriptora „fd“.

Uložiť nové.c súbor a zatvorte ho. Teraz ho skompilujte pomocou kompilátora gcc.

$ gcc nové.c

Počas vykonávania tohto kódu sme pridali údaje do ankety, ktorá sa má načítať, a táto znova zapisuje údaje, ako je uvedené v nasledujúcom výstupe.

$ ./ a.von

Záver:

V tomto vyššie popísanom článku sme diskutovali o systémovom volaní poll () v jazyku C. Dúfam, že vám tento návod pomôže a bude efektívny pri práci na operačnom systéme Linux.

Hry SuperTuxKart pre Linux
SuperTuxKart pre Linux
SuperTuxKart je vynikajúci titul navrhnutý tak, aby vám priniesol zážitok z hry Mario Kart zadarmo na vašom systéme Linux. Je to dosť náročné a zábavn...
Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
Battle for Wesnoth je jednou z najpopulárnejších open source strategických hier, ktoré si v súčasnosti môžete zahrať. Táto hra bola nielen vyvinutá ve...
Hry 0 A.D. Výukový program
0 A.D. Výukový program
Z mnohých strategických hier je tu 0 A.D. dokáže vyniknúť ako komplexný titul a veľmi hlboká, taktická hra napriek tomu, že je otvoreným zdrojom. Vývo...