C programozás

Hogyan kell használni Válassza ki a rendszerhívást a C-ben

Hogyan kell használni Válassza ki a rendszerhívást a C-ben
A select () rendszerhívás lehetővé teszi a rendszer számára, hogy nyomon kövesse több fájlleírót. Tehát a kiválasztott rendszerhívás megvárja, amíg az egyik leíró vagy egy egész kiderül, hogy „készen áll” egy adott típusú I / O tevékenységre (e.g., lehetséges bemenet). Ha a következő I / O folyamat (pl.g., a read (2)) blokkolás ellenére is végrehajtható, a fájlleíró képesnek tekinthető. A select () metódus leírja, hogy a dokumentumleíró elérhető-e olvasásra, előkészítve írásra, vagy kivételes állapotban van-e. Tegyük fel, hogy a megadott helyzet hamis a teljesen megfogalmazott fájlleírók esetében. Ebben az esetben a select () rendszerhívási blokkok az említett körülmények előtt legalább a megadott dokumentumleírók egyikére érvényesek, megegyeznek a megadott időtúllépés intervallummal.

Példa a rendszerhívás kiválasztására:

Nézzünk egy egyszerű példát a kiválasztott rendszerhívás működésének ellenőrzésére. Nyissa meg a parancssori héjat a „Ctrl + Alt + T billentyűkombinációval.”A terminál megnyitása után ellenőrizze, hogy telepítve van-e egy C nyelvű fordító a rendszerére, mert a kód nélküle nem fog működni. Ha még nincs, akkor próbálja ki az alábbi parancsot.

$ sudo apt install gcc

Ha azt szeretné, hogy a Linux select rendszerhívás működjön, akkor az alábbi parancsnak megfelelően telepítenie kell a manpages-dev csomagot a rendszerére. Írja be felhasználói jelszavát a folytatáshoz.

$ sudo apt install manpages-dev

Az alábbi „man” paranccsal láthatja a kiválasztott rendszerhívás szintaxisát és működését.

$ man 2 select

Az alábbiakban a kiválasztott rendszerhívás kimeneti kézi oldala látható. Lépjen ki a „q” gomb megnyomásával.

A szabványos könyvtárakat, parancssori terminál- és álterminál-alkalmazásokat, STREAMS központú dokumentumokat, FIFO-kat, beleértve a csöveket is, a select () modul támogatja. A select () aktivitása a dokumentumleírókban, amelyek hivatkoznak ezekre a más fájlformátumokra, ismeretlen. Tehát alább a Select system hívás magyarázata található.

A fenti képen látható szintaxis leírását az alábbiakban ismertetjük.

Fent látható a könyvtár, amelyet a kiválasztott rendszerhívás használata közben be kell illeszteni a C kódba. Ha nincs benne, a kód nem működik.

A nfds utasítás meghatározza az értékelendő fájlleíró készletet. A select () módszer a fájlleírókat ellenőrzi 0 és nfds-1 között.

Míg readfds nem nulla, az fd_set formanyomtatványra utal, amely meghatározza, hogy melyik dokumentumleírókat kell ellenőrizni az olvasási készség szempontjából a bemeneten, és mely dokumentumleírókat kell beállítani a kimeneten történő olvasásra.

Amikor az writefds A paraméter nem üres, az fd_set formanyomtatványra utal, amely meghatározza, hogy mely dokumentumleírókat kell ellenőrizni, hogy készen állnak-e beírni a bemenetre. A dokumentumleírókat fel kell készíteni arra, hogy a kimenetre komponáljanak.

Amíg a errorfds A paraméter nem üres, egy fd_set típusú objektumra vonatkozik, amely meghatározza, hogy mely dokumentumleírókat kell megvizsgálni, hogy várják-e a bemeneti állapot állapotát. a dokumentumleírókat a kimeneten is ellenőrizni kell.

A readfds, writefds és errorfds paraméterek a teljesítés után frissülnek annak jelzésére, hogy a dokumentumleírók fel vannak készítve az olvasásra, teljesen fel vannak készítve az írásra, vagy akár kivételes állapotra is várnak. Ha a következő bit rögzítve van a bemeneten, és a vonatkozó helyzet minden fájlleíróra érvényes valamivel nfds alatt, akkor a következő bitet hatékony teljesítésre helyezzük.

Bár az időtúllépés paraméter nem igazán üres, egy struktúra időbeli entitáshoz vezet, amely meghatározza a legfőbb időt a tűz megtartására a választás befejezéséig. A Select () nem teljesen akadályozza, ha az ilyen időkorlát paraméter 0 elemű struktúra időbeli objektumhoz vezet. A Select () leáll, hacsak egy előfordulás nem teszi lehetővé az egyik szűrő lekérését igaz (nem nulla) eredménnyel, függetlenül attól, hogy az időtúllépés utasítás üres hivatkozás. A Select () sikeresen működik, és 0-t eredményez, amikor a várakozási idő még az előfordulás előtt véget ér, ami megkövetelheti, hogy a több maszk egyikét nulla értékre állítsák.

Ez a makró megszünteti a gyűjteményt (törli az összes dokumentumleírót). Használható a dokumentumleíró gyűjtemény inicializálásának első lépéseként.

Az fd dokumentumleírót ez a makró adja hozzá a gyűjteményhez. A dokumentumleíró használata egy már létező gyűjteményhez nem működőképes, ezért nem eredményez kivételhibát.

Ez a makró eltávolítja az fd dokumentumleírót a gyűjteményből. A nem létező fájlleíró, amely a gyűjteményből kikerült, nem működik, ezért nem jelent kivételt.

A select () rendszerhívás megváltoztatja a gyűjtemények adatait vagy adatait a fent említett szabályoknak megfelelően. Az FD ISSET () makrót kiválaszthatja a select () meghívásával, hogy megnézze, rendelkezésre áll-e egy dokumentumleíró a gyűjteményben.

Hozzunk létre egy új C típusú fájlt „új.c ”az alábbiak szerint.

$ nano új.c

Megnyílt a GNU szerkesztője. Írja ki az alábbi kódot. A kód fejléceket, fő funkciót tartalmaz, néhány fájlleíróval, a fentiek szerint. Az időintervallum szerkezetét is tartalmazza. Ezután a select system hívást használtuk az „if” utasítás hibájának ellenőrzésére. Nyomja meg a „Ctrl + S” billentyűt a kód mentéséhez, a „Ctrl + X” pedig nem léphet ki a szerkesztőből.

Most fordítsa le a kódot a „gcc” utasítással.

$ gcc new.c

Futtassa a kódot, és ne adjon hozzá bemenetet. A kimenet azt mondja, hogy „select timeout.”

$ ./ a.ki

Ismét futtassa a kódot, és adjon meg némi bevitelt a terminálban, pl.g., - Aqsa.”Kiadja, hogy az„ adatok rendelkezésre állnak.”

Következtetés:

A kiválasztott rendszerhívást az Ubuntu 20-on hajtottuk végre.04 Linux rendszer. A kódnak egyenletesen és megfelelően kell működnie a Linux összes disztribúcióján. Remélem, hogy ezt a cikket könnyű megvalósítani és megérteni.

Shadow of the Tomb Raider for Linux Tutorial
A Shadow of the Tomb Raider a Tomb Raider sorozat tizenkettedik kiegészítője - az Eidos Montreal által létrehozott akció-kaland játék franchise. A ját...
Az FPS növelése Linux alatt?
Az FPS jelentése Képkocka másodpercenként. Az FPS feladata a videolejátszások vagy játékteljesítmények képkockasebességének mérése. Egyszerű szavakkal...
A legnépszerűbb Oculus App Lab játékok
Ha Oculus fülhallgató-tulajdonos, akkor tisztában kell lennie az oldalsó töltéssel. Az oldaltöltés a nem áruházi tartalom fejhallgatóra történő telepí...