C Programmēšana

Kā izmantot vēlēšanu sistēmas izsaukumu C

Kā izmantot vēlēšanu sistēmas izsaukumu C
Funkcija poll () ļauj programmām multipleksēt ievadi un izvadi, izmantojot virkni failu deskriptoru. Citiem vārdiem sakot, aptaujas () sistēmas izsaukums ir analogs atlasītajam () sistēmas izsaukumam, jo ​​tas aizdegas vienam no vairākiem failu aprakstiem, kļūstot pieejams I / O. Aptauja () pārbauda piešķirto dokumentu deskriptoru notikumu (-u) iekļaušanai incidentos katram masīva elementam, uz kuru norāda faila deskriptori. Aptaujas () metode var noteikt, kuram no failu aprakstiem programma lasīs vai rakstīs informāciju, kurai ir bijuši šie gadījumi. Šajā ceļvedī mēs izmantosim Ubuntu 20.04, lai saprastu jēdzienu poll () sistēmas izsaukums uz Linux soli pa solim.

Sintakse:

int aptauja (struct pollfd * ufds, neparakstīts int nfds, int taimauts);

Arguments “fds” nosaka pārbaudāmos dokumentu aprakstus, kā arī katram nozīmīgos gadījumus. Tā ir atsauce vai nu uz masīvu, kurā katram atvērta dokumenta aprakstam ir viens elements. Masīva elementi ir pollfd struktūras, kur fd apzīmē atvērtu dokumentu deskriptoru, un visi notikumi un atkārtoti notikumi, kurus parasti sauc par bitmaskām, tiek ģenerēti, izveidojot atbilstošo notikumu karodziņu apvienošanu:

Polīns:

Izņemot augstas prioritātes datus, var nolasīt informācijas datus, kas pat nav bloķēti. Turklāt, ja atbildes ziņojums ir nulle izmēru, šis karodziņa signāls tiek ģenerēts STREAMS revolūcijās. Šim karodziņam ir tāda pati nozīme kā POLLRDNORM | POLLRDBAND.

POLLRDNORM:

Bez pārtraukuma var nolasīt parastos informācijas datus. Neskatoties uz STREAMS pārtraukumu, informāciju par primāro prioritāro problēmu diapazonu 0 var nolasīt. Un, ja atbildes ziņojuma garums ir nulle, šis signāls tiek ģenerēts atkārtotos notikumos.

POLLRDBAND:

Dati par galvenajām bažām tiks nolasīti, neraugoties uz kavēšanos. Informāciju par prioritāšu diapazoniem, kas pārsniedz nulli, var nolasīt, neskatoties uz iejaukšanos STREAMS. Un, ja ziņojuma atbildes ilgums ir nulle, šis signāls tiek izplatīts pagriezienos.

POLLPRI:

Dokumenta aprakstā var būt daži izņēmumi. Informācijai, kurai ir galvenā prioritāte, var tikt liegta bloķēšana. Turklāt, ja atbildes ilgums ir nulle, šis signāls tiek izplatīts straumēm revolūcijās.

PIESĀRŅOJUMS:

Lietotāji var izrakstīt, izmantojot karogu POLLOUT. Atņemot apstāšanos, var ierakstīt tipiskus datus. Informāciju par preferenču joslu 0 var ierakstīt, neskatoties uz STREAMS pārtraukumu.

POLLWRNORM:

Tas darbojas tāpat kā POLLOUT.

POLLWRBAND:

Prioritārākie dati tiks rakstīti, izmantojot šo karodziņu. Informāciju par STREAMS preferenču diapazoniem, kas ir lielāki par nulli, var ierakstīt bez bloķēšanas. Šajā aktivitātē tiek vērtētas tikai joslas, uz kurām jau ir rakstīts vismaz vienu reizi, jo šajā STREAM nav uzrakstīta neviena preferenču josla.

POLLERR:

Tas ir kļūdas stāvoklis un rodas tikai tad, kad sistēma vai plūsma ir saskārusies ar problēmu. Šis simbols attiecas tikai uz atjaunoto bitmasku; visā aktivitātes dalībniekā tas tiek ignorēts.

NOSLĒGUMS:

Tas norāda pārtraukšanas nosacījumu un notiek tikai tad, kad savienojums ar sistēmu ir atspējots. Šis gadījums un POLLOUT ir vienlīdz savietojami; tiklīdz ir radusies problēma, straume nekad netiks rakstīta.

POLLNVAL:

Tas norāda nederīgu vai neparastu pieprasījumu. Tomēr šī darbība neizslēdz dalību POLLIN, POLLRDNORM, POLLRDBAND vai POLLPRI. Šis simbols attiecas tikai uz atjaunoto bitmasku; pasākuma dalībnieks to aizmirst.

Aptaujas sistēmas izsaukuma piemērs:

Tas veic to pašu lomu kā select (), kaut arī lielākā mērogā. Aptauja () ir pieejama jebkurā Glibc balstītā Linux mašīnā. Vecāki kodoli atdarina aptauju () ar select () visā C bibliotēkā. Tomēr programmām nevajadzētu atšķirties. Lūk, piemērs tam, kāda ir aptauja (). Tāpēc vispirms atveriet komandrindas termināli, izmantojot īsinājumtaustiņu “Ctrl + Alt + T.Pēc atvēršanas mums ir jāizveido C veida fails, lai tajā ierakstītu C tipa kodu. Šim nolūkam mēs izmantojām nano redaktoru. Tātad, izmēģiniet zemāk esošo nano komandu terminālā kopā ar C faila nosaukumu.

$ nano jauns.c

Tagad ir atvērts C faila “jauns” nano redaktors. Jums vispirms tajā jāiekļauj dažas bibliotēkas, īpaši “aptauja.h ”bibliotēka. Galvenajai funkcijai ir norādīts vesels skaitlis atgriešanās tips ar diviem argumentiem tā parametrā, piemēram,.g., argc un argv. Tad mēs esam deklarējuši faila deskriptoru fd un rakstzīmju tipa masīvu ar nosaukumu “buf.Pēc tam ir definēts struktūras tipa mainīgais ar nosaukumu 2. lieluma pollfd pfds. Pēc tam ir paziņots par atvērtas sistēmas izsaukumu, lai iegūtu vērtību no rakstzīmju tipa masīva un piešķirtu faila aprakstam “fd”, kā redzams attēlā. Kamēr faila deskriptors ir “1”, struktūra “pfds” tiks atjaunināta ar dažiem tajā esošajiem datiem, izmantojot tajā esošo karodziņu POLLIN. Tagad mēs esam definējuši poll () sistēmas izsaukuma funkciju. Pirmais poll () sistēmas izsaukuma parametrs ir kodā izmantotā ufds struktūra. Otrais parametrs norāda kopējo pollfd struktūru fds sērijā.

Un pēdējais parametrs rāda vesela skaitļa tipa taimauta vērtību aptaujas sistēmas izsaukumam. Ja pfds ir revents un pievienots ar vērtību 0, tad lasītais sistēmas izsaukums nolasīs datus no bufera. Izraksts “ja” tiks izmantots, lai pārbaudītu, vai izlasītais priekšraksts ir atdevis vērtību veselam skaitlim un rakstījis datus. Ja struktūras “pfds” atrodas pozīcijā “1”, vienlaikus atjaunojot un ievadot datus, nolasītās sistēmas izsaukumā tiks izmantoti bufera dati, vienlaikus izmantojot “fd” deskriptoru.

Saglabājiet jauno.c failu un aizveriet to. Tagad apkopojiet to, izmantojot kompilatoru gcc.

$ gcc jauns.c

Izpildot šo kodu, mēs aptaujā pievienojām datus, kas jāizlasa, un tas atkal raksta datus, kā parādīts zemāk.

$ ./ a.ārā

Secinājums:

Šajā iepriekš aprakstītajā rakstā mēs esam apsprieduši poll () sistēmas izsaukumu C valodā. Es ceru, ka šī apmācība jums būs noderīga un efektīva, strādājot pie Linux operētājsistēmas.

Labākās komandrindas spēles Linux
Komandrinda nav tikai lielākais sabiedrotais, lietojot Linux, bet tā var būt arī izklaides avots, jo to var izmantot, lai spēlētu daudzas jautras spēl...
Labākās Linux spēļu gamepad kartēšanas lietotnes
Ja jums patīk spēlēt spēles Linux ar parastu tastatūru, nevis parasto tastatūru un peles ievades sistēmu, jums ir dažas noderīgas lietotnes. Daudzas d...
Noderīgi rīki Linux spēlētājiem
Ja jums patīk spēlēt spēles Linux, iespējams, ka spēļu pieredzes uzlabošanai, iespējams, esat izmantojis tādas lietotnes un utilītprogrammas kā Wine, ...