C Programování

Jak používat Select System Call In C

Jak používat Select System Call In C
Systémové volání select () umožňuje systému sledovat několik deskriptorů souborů. Vybrané systémové volání tedy čeká, až se některý z deskriptorů nebo celek ukáže jako „připravený“ na určitý typ I / O aktivity (např.G., vstup možný). Pokud následný I / O proces (např.G., read (2)) lze provést i přes blokování, deskriptor souboru je považován za schopný. Metoda select () popisuje, zda je deskriptor dokumentu k dispozici ke čtení, připraven k zápisu nebo ve stavu výjimky. Předpokládejme, že uvedená situace je nepravdivá pro zcela uvedené deskriptory souborů. V takovém případě blokování systému select () před zmíněnými okolnostmi platí minimálně pro jeden z uvedených deskriptorů dokumentu, který se rovná uvedenému intervalu časového limitu.

Příklad pro Select System Call:

Podívejme se na jednoduchý příklad, jak zkontrolovat fungování vybraného systémového volání. Otevřete prostředí příkazového řádku pomocí kláves „Ctrl + Alt + T.„Po otevření terminálu se ujistěte, že máte ve svém systému nainstalován překladač jazyka C, protože kód bez něj nebude fungovat. Pokud žádný nemáte, vyzkoušejte následující příkaz.

$ sudo apt nainstalovat gcc

Chcete-li vidět, že systémové volání systému Linux select funguje, musíte mít ve svém systému nainstalovaný balíček manpages-dev podle níže uvedeného příkazu. Chcete-li pokračovat, zadejte své uživatelské heslo.

$ sudo apt install manpages-dev

Syntaxi a fungování vybraného systémového volání můžete zobrazit pomocí níže uvedeného příkazu „man“.

$ man 2 vybrat

Níže je uvedena výstupní stránka manuálu pro vybrané systémové volání. Ukončete jej stisknutím klávesy „q“.

Standardní adresáře, terminál příkazového prostředí a aplikace pseudoterminálu, dokumenty se středem STREAMS, FIFO, včetně kanálů, jsou podporovány modulem select (). Aktivita select () na deskriptorech dokumentů odkazujících na tyto jiné formáty souborů není známa. Níže je tedy vysvětlení systémového volání Select.

Popis syntaxe zobrazené na obrázku výše je popsán níže.

Nahoře je knihovna, která má být zahrnuta do kódu C při používání vybraného systémového volání. Pokud to není zahrnuto, kód nefunguje.

The nfds Příkaz definuje sadu deskriptorů souborů, která bude vyhodnocena. Metoda select () kontroluje deskriptory souborů mezi 0 a nfds-1.

Zatímco readfds není null, odkazuje na pole formuláře fd_set, které definuje, které deskriptory dokumentů by měly být testovány na připravenost ke čtení na vstupu a které deskriptory dokumentů by měly být nastaveny na čtení na výstupu.

Když writefds parametr není prázdný, odkazuje na entitu formuláře fd_set, která definuje, které deskriptory dokumentů by měly být testovány na připravenost na vstup při vstupu. Deskriptory dokumentů by měly být připraveny k sestavení na výstupu.

Zatímco errorfds parametr není prázdný, odkazuje na objekt druhu fd_set, který určuje, které deskriptory dokumentů by měly být testovány na čekání na chybový stav věcí na vstupu; deskriptory dokumentů by také měly být ověřeny na výstupu.

Parametry readfds, writefds a errorfds se po dokončení aktualizují, což znamená, že deskriptory dokumentů jsou připraveny na čtení, plně připraveny na zápis nebo dokonce čekají na stav výjimky. Pokud je následující bit fixován na vstupu a příslušná situace je platná pro každý deskriptor souboru o něco méně než nfds, následný bit by byl umístěn na efektivní provedení.

I když parametr časového limitu není opravdu prázdný, vede k entitě časové struktury struktury, která určuje nejvyšší čas k udržení vašeho ohně, aby volba skončila. Select () zcela nebrání tomu, aby takový parametr časového limitu vedl k objektu časové struktury s 0 prvky. Select () zastaví, pokud výskyt neumožňuje načíst jeden z filtrů se skutečným (nenulovým) výsledkem, ať je příkaz timeout prázdným odkazem. Select () úspěšně uspěje a vytvoří 0, když čekací doba končí ještě předtím, než dojde k výskytu, což může vyžadovat úpravu jedné z několika masek na nenulovou hodnotu.

Toto makro vylučuje kolekci (vymaže všechny deskriptory dokumentů). Může být použit jako první krok v inicializaci kolekce deskriptorů dokumentů.

Deskriptor dokumentu fd je přidán do kolekce tímto makrem. Použití deskriptoru dokumentu do kolekce, která již existuje, by bylo nefunkční, a proto nevede k chybě výjimky.

Toto makro je deskriptor dokumentu fd odebrán ze sbírky. Deskriptor souboru vyřazený z kolekce, který neexistuje, je neprovozní, a proto nevede k výjimce.

Systémové volání select () mění informace nebo data kolekcí podle výše zmíněných pravidel. Makro FD ISSET () lze zrušit vyvoláním select (), abyste zjistili, zda deskriptor dokumentu zůstává k dispozici v kolekci.

Vytvořme nový soubor typu C s názvem „nový.c “jak je uvedeno níže.

$ nano nové.C

Byl otevřen editor GNU. Napište do ní pod kód. Kód obsahuje záhlaví, hlavní funkci s některými deskriptory souborů, jak je uvedeno výše. Obsahuje také strukturu pro hodnotu časového intervalu. Pak jsme pomocí select system call zkontrolovali chybu ve výpisu „if“. Stisknutím „Ctrl + S“ uložte tento kód a klávesou „Ctrl + X“ ukončete editor.

Nyní kód zkompilujte pomocí instrukce „gcc“.

$ gcc nové.C

Spusťte kód a nepřidávejte žádné vstupy. Na výstupu bude uvedeno „vybrat časový limit.“

$ ./A.ven

Opět spusťte kód a zadejte nějaký vstup do terminálu, např.G., "Aqsa.".„Výsledkem bude, že„ data jsou k dispozici.“

Závěr:

Implementovali jsme vybrané systémové volání na Ubuntu 20.04 Systém Linux. Tento kód by měl fungovat na všech distribucích Linuxu stejně a správně. Doufám, že tento článek bude snadno implementovatelný a srozumitelný.

Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...
Hry Jak nainstalovat a hrát Doom na Linuxu
Jak nainstalovat a hrát Doom na Linuxu
Úvod do Doom Série Doom vznikla v 90. letech po vydání původního Doomu. Byl to okamžitý hit a od té doby herní série získala řadu ocenění a původní Do...
Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...