C Programmeerimine

Kuidas kasutada valitud süsteemikõnet C-s

Kuidas kasutada valitud süsteemikõnet C-s
Süsteemikõne select () võimaldab süsteemil jälgida mitut failikirjeldajat. Niisiis, valitud süsteemikõne ootab, kuni üks kirjeldajatest või tervik osutub teatud tüüpi sisend- / väljundtegevuse jaoks (valmis.g., võimalik sisestada). Kui järgnev sisend / väljundprotsess (nt.g., read (2)) saab blokeerimisest hoolimata läbi viia, loetakse failikirjeldaja võimalikuks. Meetod select () kirjeldab, kas dokumendi kirjeldaja on lugemiseks saadaval, kirjutamiseks ette valmistatud või erandkorras. Oletame, et märgitud olukord on vale täielikult esitatud failide kirjeldajate puhul. Sellisel juhul kehtivad select () süsteemi kõne plokid enne mainitud asjaolusid vähemalt ühe dokumendi kirjeldaja jaoks, mis on võrdne määratud ajalõpu intervalliga.

Näide süsteemikõne valimiseks:

Olgem lihtsa näite valitud süsteemikõne toimimise kontrollimiseks. Avage käsurea kest, kasutades klahve „Ctrl + Alt + T.”Pärast terminali avamist veenduge, et teie süsteemi oleks installitud C-keele kompilaator, kuna kood ei tööta ilma selleta. Kui teil seda pole, proovige selleks teha järgmist käsku.

$ sudo apt install gcc

Kui soovite, et Linuxi valitud süsteemikõne toimiks, peate oma süsteemi installima paketi manpages-dev vastavalt alltoodud käsule. Jätkamiseks kirjutage oma kasutaja parool.

$ sudo apt install manpages-dev

Valitud süsteemikõne süntaksit ja toimimist näete alloleva käsuga "man".

$ man 2 vali

Valitud süsteemikõne väljundkäsuleht on näidatud allpool. Sulgege see, vajutades klahvi “q”.

Moodul select () toetab standardkatalooge, käsukesta terminali ja pseudoterminali rakendusi, STREAMS-keskseid dokumente, FIFO-sid, sealhulgas torusid. Select () tegevus dokumentide kirjeldajatel, viidates neile teistele failivormingutele, pole teada. Nii et allpool on süsteemi süsteemikõne selgitus.

Ülaltoodud pildil näidatud süntaksi kirjeldust kirjeldatakse allpool.

Eespool on teek, mis lisatakse valitud süsteemi kõne kasutamise ajal C-koodi. Kui seda pole kaasas, ei tööta kood.

The nfds lause määrab failikirjeldajate komplekti, mida hinnatakse. Meetod select () kontrollib failikirjureid vahemikus 0 kuni nfds-1.

Kuigi readfds ei ole null, see viitab vormi fd_set massiivile, mis määratleb, milliseid dokumendikirjeldajaid tuleks sisendis lugeda ja millised dokumendikirjeldajad peaksid olema väljundis lugemiseks seatud.

Kui writefds parameeter ei ole tühi, see viitab vormi fd_set olemile, mis määratleb, milliseid dokumendikirjeldajaid tuleb valmisolekusse sisendisse testida. Dokumendi kirjeldajad peaksid olema valmis koostama väljundil.

Samal ajal kui errorfds parameeter ei ole tühi, see viitab objektile fd_set, mis määrab, milliseid dokumendikirjeldajaid tuleks sisendi veaolukorra ootamiseks testida; samuti tuleks dokumendi kirjeldusi väljundil kontrollida.

Readfds-, writefds- ja errorfds-parameetreid värskendatakse pärast lõpetamist, et näidata, et dokumendikirjeldajad on ette valmistatud lugemiseks, täielikult kirjutamiseks ette valmistatud või isegi ootamas erandit. Kui järgnev bitt on sisendil fikseeritud ja vastav olukord kehtib kõigi failikirjeldajate jaoks, mis on veidi alla nfds, asetatakse järgmine bitt tõhusale lõpuleviimisele.

Kuigi ajalõpu parameeter pole tegelikult tühi, viib see struktuuri ajaaja entiteedini, mis määrab kõrgeima aja teie tule hoidmiseks valiku lõpetamiseks. Valik () ei takista päris, kui selline ajalõpu parameeter viib 0 elemendiga struktuuri ajalisse objekti. Valik () peatub, välja arvatud juhul, kui esinemine võimaldab ühte filtritest tõese (nullist erineva) tulemusega hankida, olenemata sellest, kas ajalõpu lause on tühi viide. Valik () õnnestub edukalt ja annab 0, kui ooteperiood lõpeb isegi enne esinemist, mis võib nõuda ühe mitmest maskist kohandamist nulliväärtusega.

See makro kõrvaldab kogu (kustutab kõik dokumendi kirjeldajad). Seda saab kasutada esimese käiguna dokumendikirjeldajate kogu initsialiseerimisel.

Dokumendi kirjeldaja fd lisatakse kogusse selle makro abil. Dokumendikirjeldaja kasutamine juba eksisteerinud kogu jaoks oleks mittetoimiv ja seetõttu ei tekiks erandiviga.

See makro eemaldab dokumendikirjeldaja fd kogust. Kogust välja jäetud failikirjeldus, mida pole olemas, ei tööta ja seetõttu ei too see erandit.

Süsteemikõne select () muudab kogude teavet või andmeid vastavalt ülalnimetatud reeglitele. FD ISSET () makro võidakse ära kutsuda, kasutades käsku select (), et näha, kas dokumendi kirjeldaja jääb kogusse kättesaadavaks.

Loome uue C-tüüpi faili nimega „uus.c ”nagu allpool.

$ nano uus.c

GNU toimetaja on avatud. Kirjutage sinna all olev kood. Kood sisaldab päiseid, põhifunktsiooni koos mõne ülalkirjeldatud failikirjeldusega. See sisaldab ka ajaintervalli väärtuse struktuuri. Seejärel oleme kasutanud valitud süsteemikõnet, et kontrollida viga lauses „kui”. Selle koodi salvestamiseks vajutage klahvikombinatsiooni „Ctrl + S” ja redaktorist väljumise lõpetamiseks klahvi „Ctrl + X”.

Nüüd kompileerige kood käsu “gcc” abil.

$ gcc uus.c

Käivitage kood ja ärge lisage sisendit. Väljundil on kirjas „valige timeout.”

$ ./ a.välja

Jällegi käivitage kood ja sisestage terminali sisend, nt.g., "Aqsa."See väljastab, et" andmed on saadaval.”

Järeldus:

Oleme rakendanud valitud süsteemikõne Ubuntu 20-s.04 Linuxi süsteem. Kood peaks töötama kõikides Linuxi jaotustes võrdselt ja korralikult. Loodetavasti leiate, et seda artiklit on lihtne rakendada ja mõista.

Kuidas kuvada OSD ülekatet täisekraanil Linuxi rakendustes ja mängudes
Täisekraaniga mängude mängimine või rakenduste kasutamine häireteta täisekraanirežiimis võib teid paneelil või tegumiribal kuvatavast asjakohasest süs...
Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...
Kuidas mängu Linuxis arendada
Kümme aastat tagasi ei osanud paljud Linuxi kasutajad ennustada, et nende lemmikoperatsioonisüsteem on ühel päeval populaarne kommertsvideomängude män...