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.