C programavimas

Kaip naudotis apklausos sistemos iškvietimu C

Kaip naudotis apklausos sistemos iškvietimu C
Apklausos () funkcija leidžia programoms daugkartiškai įvestis ir išvestis per failų deskriptorių seriją. Kitaip tariant, apklausos () sistemos iškvietimas yra analogiškas veikiančio sistemos skambučio pasirinkimui, nes jis palaiko vieną iš kelių failų deskriptorių, kai tampa prieinamas I / O. Apklausa () nagrinėja priskirtą dokumento deskriptorių, nurodantį įvykį (-ius) įvykiuose prie kiekvieno masyvo elemento, nurodančio jį failų deskriptoriais. Apklausos () metodas gali nustatyti, kuriems failų deskriptoriams programa skaitys ar rašys išsamią informaciją, kuriems teko matyti šiuos įvykius. Šiame vadove mes naudosime „Ubuntu 20“.04 suprasti apklausos () sistemos skambučio „Linux“ koncepciją žingsnis po žingsnio.

Sintaksė:

int apklausa (struct pollfd * ufds, nepasirašyti int nfds, int skirtasis laikas);

Argumentas „fds“ nustato tikrintinus dokumentų aprašus, taip pat reikšmingus kiekvienam atvejus. Tai nuoroda į masyvą, kuriame yra po vieną elementą kiekvienam atviro dokumento deskriptoriui. Masyvo elementai yra pollfd struktūros, kur fd žymi atvirą dokumento deskriptorių, o visi įvykiai ir pakartotiniai įvykiai, paprastai vadinami bitų kaukėmis, generuojami sukuriant atitinkamų įvykių vėliavų sujungimą:

Polinas:

Be aukšto prioriteto duomenų, galima perskaityti informacinius duomenis, net atimant blokavimą. Be to, jei atsakymo pranešimas yra nulinio dydžio, šis vėliavos signalas generuojamas STREAMS revoliucijose. Ši vėliava turi tą pačią reikšmę kaip ir POLLRDNORM | POLLRDBAND.

POLLRDNORM:

Be pertraukų, įprastus informacijos duomenis galima nuskaityti. Informaciją apie pagrindinio prioriteto 0 juostą galima perskaityti nepaisant STREAMS pertraukimo. Ir jei atsakymo pranešimas yra nulinio ilgio, šis signalas generuojamas pakartotiniuose įvykiuose.

TURINYS:

Pagrindinio susirūpinimo duomenys bus perskaityti, nepaisant to, kad vėluojama. Nepaisant kišimosi į STREAMS, galima perskaityti informaciją apie prioritetinius diapazonus, viršijančius nulį. Ir jei pranešimo atsakymas yra nulinės trukmės, šis signalas skleidžiamas revoliucijomis.

POLLPRI:

Gali būti keletas dokumento aprašo išimčių. Svarbiausią prioritetą turinčią informaciją galima neskaityti. Be to, jei atsako trukmė yra lygi nuliui, šis signalas skleidžiamas STREAMS.

TERŠALAS:

Vartotojai gali rašyti naudodami „POLLOUT“ vėliavą. Neturint sustojimo, galima įrašyti tipinius duomenis. Informacija apie 0 pirmenybės juostą gali būti įrašoma, nepaisant pertraukimo STREAMS.

POLLWRNORM:

Tai veikia taip pat, kaip ir „POLLOUT“.

ĮTRAUKIS:

Svarbiausi duomenys bus parašyti naudojant šią žymę. Informacija apie STREAMS pirmenybės diapazonus, didesnius nei nulis, gali būti įrašoma neužblokuojama. Ši veikla vertina tik tas grupes, į kurias jau buvo parašyta bent kartą, nes šiame „STREAM“ nebuvo parašyta jokių prioritetų juostų.

POLLERR:

Tai yra klaidos būsena ir įvyksta tik tada, kai sistemoje ar sraute kilo problema. Šis simbolis galioja tik atnaujinamam bitkaukiui; viso dalyvio metu tai nepastebima.

POLLHUP:

Jis nurodo pakabinimo sąlygą ir įvyksta tik tada, kai išjungiamas ryšys su sistema. Šis įvykis ir POLLOUT yra vienodai suderinami; iškilus problemai, srautas niekada nebus parašytas.

POLLNVAL:

Tai nurodo neteisingą ar neįprastą užklausą. Nepaisant to, ši veikla neatmeta dalyvavimo POLLIN, POLLRDNORM, POLLRDBAND ar POLLPRI. Šis simbolis galioja tik atnaujinamam bitkaukiui; tai nepastebima renginio dalyvio.

Apklausos sistemos iškvietimo pavyzdys:

Jis atlieka tą patį vaidmenį kaip ir select (), nors ir didesniu mastu. Apklausa () pasiekiama bet kuriame „Glibc“ pagrįstame „Linux“ kompiuteryje. Vyresni branduoliai imituoja apklausą () su select () visoje C bibliotekoje. Tačiau programoms nereikėtų atskirti. Štai pavyzdys, kaip jaučiasi apklausa (). Taigi pirmiausia atidarykite komandinės eilutės terminalą naudodami spartųjį klavišą „Ctrl + Alt + T.“Atidarę turime sukurti C tipo failą, kuriame parašytume C tipo kodą. Tam mes naudojome nano redaktorių. Taigi, išbandykite žemiau esančią „nano“ komandą terminale kartu su C failo pavadinimu.

$ nano naujas.c

Dabar atidarytas C failo „naujas“ nano redaktorius. Pirmiausia į jį turite įtraukti keletą bibliotekų, ypač „apklausą.h “biblioteka. Nurodyta, kad pagrindinė funkcija turi sveiko skaičiaus grąžinimo tipą, kurio parametre yra du argumentai, t.g., argc ir argv. Tada mes paskelbėme failo deskriptorių fd ir simbolių tipo masyvą pavadinimu „buf.Po to buvo apibrėžtas struktūros tipo kintamasis, pavadintas 2 dydžio pollfd pfds. Paskui buvo paskelbtas atviros sistemos iškvietimas, kad gautų reikšmę iš simbolių tipo masyvo ir priskirtų failo deskriptoriui „fd“, kaip parodyta paveikslėlyje. Nors failo aprašas yra „1“, struktūra „pfds“ bus atnaujinta su kai kuriais joje esančiais duomenimis, naudojant joje esančią vėliavą „POLLIN“. Dabar mes apibrėžėme apklausos () sistemos iškvietimo funkciją. Pirmasis apklausos () sistemos iškvietimo parametras yra kode naudojama „ufds“ struktūra. Antrasis parametras nurodo bendrą „pollfd“ struktūrų fds serijoje.

Paskutinis parametras rodo visuotinio skaičiaus tipo skirtojo laiko reikšmę apklausos sistemos iškvietimui. Jei pfds yra revents ir pridedami su 0 verte, tada perskaitytas sistemos iškvietimas nuskaitys duomenis iš buferio. Sakinys „jei“ bus naudojamas patikrinti, ar perskaitytas sakinys grąžino savo vertę į sveikąjį skaičių ir įrašo duomenis. Jei struktūrinis „pfds“ yra „1“ pozicijoje, kol atnaujinamas ir įvedamas duomenys, perskaitytas sistemos iškvietimas naudos buferio duomenis naudodamas „fd“ deskriptorių.

Išsaugokite naują.c failą ir jį uždarykite. Dabar sukompiliuokite jį naudodami kompiliatorių gcc.

$ gcc naujas.c

Vykdydami šį kodą, apklausoje pridėjome duomenis, kuriuos reikia perskaityti, ir jis vėl įrašo duomenis kaip žemiau pateiktame išvestyje.

$ ./ a.išėjo

Išvada:

Šiame aukščiau aprašytame straipsnyje aptarėme apklausos () sistemos iškvietimą C kalba. Tikiuosi, kad ši pamoka bus naudinga ir efektyvi dirbant su „Linux“ operacine sistema.

10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...
5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...
Mūšis už Wesnothą 1.13.6 Išleista plėtra
Mūšis už Wesnothą 1.13.6 išleistas praėjusį mėnesį, yra šeštasis 1 versijos kūrimo leidimas.13.„x“ serija ir ji teikia daug patobulinimų, ypač vartoto...