C Programování

Jak používat volání systému hlasování v C

Jak používat volání systému hlasování v C
Funkce poll () umožňuje programům multiplexovat vstup a výstup prostřednictvím řady deskriptorů souborů. Jinými slovy, systémové volání poll () je analogické se systémovým voláním select () při práci, protože udržuje oheň pro jeden z několika deskriptorů souborů tím, že je k dispozici pro I / O. Poll () zkoumá přiřazený deskriptor dokumentu pro výpis událostí v událostech na každý prvek pole, který na něj ukazuje deskriptory souborů. Metoda poll () může určit, kterému z deskriptorů souborů program načte nebo zapíše podrobnosti, u kterých došlo k těmto incidentům. V této příručce budeme používat Ubuntu 20.04 porozumět konceptu systémového volání poll () krok za krokem v systému Linux.

Syntax:

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

Argument „fds“ určuje deskriptory dokumentů, které mají být zkontrolovány, a také významné události pro každý z nich. Je to odkaz na pole, které má jeden prvek pro každý otevřený deskriptor dokumentu. Prvky pole jsou struktury pollfd, kde fd označuje otevřený deskriptor dokumentu a všechny události a opakované události, obvykle nazývané bitové masky, jsou generovány vytvořením sloučení příslušných příznaků událostí:

POLLIN:

Kromě dat s vysokou prioritou lze číst informační data, která nemusí být vůbec blokována. Také pokud má zpráva odpovědi nulovou velikost, je tento příznakový signál generován pro STREAMS v příjmech. Tento příznak má stejný význam jako POLLRDNORM | POLLRDBAND.

POLLRDNORM:

Bez přerušení lze odečíst běžné informační údaje. Informace o pásmu 0 týkající se primární priority lze číst i přes přerušení pro STREAMS. A pokud má zpráva odpovědi nulovou délku, je tento signál generován v opakovaných událostech.

POLLRDBAND:

Data primárního zájmu budou načtena, přestože způsobí zpoždění. Informace o prioritních rozsazích větších než nula lze číst i přes zásah do STREAMS. A pokud je odezva zprávy nulová, tento signál se šíří v příjmech.

POLLPRI:

Z deskriptoru dokumentu mohou existovat určité výjimky. Informace s nejvyšší prioritou lze číst bez blokování. Také pokud je odezva nulová, tento signál se šíří pro STREAMS v reventech.

POLLOUT:

Uživatelé mohou odepisovat pomocí příznaku POLLOUT. Zbaveni zastavení, lze zaznamenat typická data. Informace o preferenčním pásmu 0 lze zaznamenat i přes přerušení ve STREAMS.

POLLWRNORM:

Funguje stejně jako POLLOUT.

POLLWRBAND:

Pomocí tohoto příznaku budou zapisována nejdůležitější data. Informace o rozsahu preferencí větších než nula pro STREAMS lze zaznamenávat bez blokování. Tato aktivita hodnotí pouze pásma, která již byla zapsána minimálně jednou, protože na tomto STREAMU nebylo napsáno žádné preferenční pásmo.

POLLERR:

Jedná se o chybový stav a vyskytuje se pouze v případě, že systém nebo tok narazil na problém. Tento symbol se vztahuje pouze na bitmasku revents; v průběhu účastníka aktivit je to přehlíženo.

POLLHUP:

Určuje podmínku zavěšení a nastane pouze v případě, že bylo zakázáno připojení k systému. Tento výskyt a POLLOUT jsou stejně kompatibilní; jakmile vznikne problém, stream nebude nikdy zapsán.

POLLNVAL:

Toto určuje neplatný nebo neobvyklý požadavek. Tato aktivita nicméně nevylučuje účast v POLLIN, POLLRDNORM, POLLRDBAND nebo POLLPRI. Tento symbol se vztahuje pouze na bitmasku revents; u účastníka akce je přehlédnut.

Příklad volání systému hlasování:

Provádí stejnou roli jako select (), i když ve větším měřítku. Poll () je k dispozici na libovolném stroji Linux založeném na Glibc. Starší jádra napodobují poll () s select () v celé knihovně C. Programy by však neměly vyžadovat rozlišení. Zde je příklad toho, jak se cítí poll (). Takže nejprve otevřete terminál příkazového řádku pomocí klávesové zkratky „Ctrl + Alt + T.„Po jeho otevření musíme vytvořit soubor typu C, abychom do něj mohli napsat kód typu C. K tomu používáme nano editor. Vyzkoušejte tedy níže uvedený příkaz nano v terminálu spolu s názvem souboru C.

$ nano nové.C

Nyní byl otevřen nano editor pro soubor C „nový“. Nejprve do něj musíte zahrnout některé knihovny, zejména „anketu“.h “knihovna. Hlavní funkce byla zadána jako mající celočíselný návratový typ se dvěma argumenty v parametru, např.G., argc a argv. Pak jsme deklarovali deskriptor souboru fd a pole typu znaků s názvem „buf.„Poté byla definována proměnná typu struktury s názvem pollfd pfds o velikosti 2. Dále bylo deklarováno otevřené systémové volání, které má získat hodnotu z pole typu znaků a přiřadit ji deskriptoru souboru „fd“, jak je vidět na obrázku. Zatímco deskriptor souboru je „1“, struktura „pfds“ bude aktualizována s některými daty v něm pomocí příznaku POLLIN v něm. Nyní jsme definovali funkci volání systému poll (). První parametr systémového volání poll () je struktura ufds použitá v kódu. Druhý parametr určuje celkový počet struktur pollfd v řadě fds.

A poslední parametr zobrazuje hodnotu časového limitu typu integer pro volání systému hlasování. Pokud jsou pfds reventy a přidány s hodnotou 0, pak načtené systémové volání načte data z vyrovnávací paměti. Příkaz „if“ bude použit ke kontrole, zda příkaz pro čtení vrátil svou hodnotu na celé číslo a zapíše data. Pokud je struktura „pfds“ v poloze „1“ při reventování a zadávání dat, přečtené systémové volání použije data z vyrovnávací paměti při použití deskriptoru „fd“.

Uložit nový.c soubor a zavřete jej. Nyní jej zkompilujte pomocí kompilátoru gcc.

$ gcc nové.C

Při provádění tohoto kódu jsme přidali data do průzkumu, který se má načíst, a zapisuje data znovu jako v níže uvedeném výstupu.

$ ./A.ven

Závěr:

V tomto výše popsaném článku jsme diskutovali o systémovém volání poll () v jazyce C. Doufám, že vám tento návod bude užitečný a efektivní při práci na operačním systému Linux.

Hry Jak nainstalovat League Of Legends na Ubuntu 14.04
Jak nainstalovat League Of Legends na Ubuntu 14.04
Pokud jste fanouškem League of Legends, pak je to pro vás příležitost otestovat běh League of Legends. Všimněte si, že LOL je podporován na PlayOnLinu...
Hry Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
Nainstalujte si nejnovější strategickou hru OpenRA na Ubuntu Linux
OpenRA je herní engine Libre / Free Real Time Strategy, který obnovuje rané hry Westwood, jako je klasický Command & Conquer: Red Alert. Distribuované...
Hry Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Emulátor Dolphin vám umožní hrát vybrané hry Gamecube a Wii na osobních počítačích se systémem Linux (PC). Jako volně dostupný herní emulátor s otevř...