C Programmēšana

Kā izmantot atlasītu sistēmas zvanu C

Kā izmantot atlasītu sistēmas zvanu C
Sistēmas izsaukums select () ļauj sistēmai izsekot vairākiem failu aprakstiem. Tātad izvēlētais sistēmas zvans gaida, kamēr kāds no aprakstiem vai viss izrādīsies “gatavs” konkrētam I / O darbības veidam (e.g., iespējama ievade). Ja nākamais I / O process (piemēram,.g., lasīt (2)) var veikt, neskatoties uz bloķēšanu, faila deskriptors tiek uzskatīts par spējīgu. Metode select () apraksta, vai dokumenta deskriptors ir pieejams lasīšanai, sagatavots rakstīšanai vai izņēmuma stāvoklī. Pieņemsim, ka norādītā situācija ir nepatiesa attiecībā uz pilnīgi norādītajiem failu aprakstiem. Tādā gadījumā select () sistēmas izsaukuma bloki pirms minētajiem apstākļiem ir derīgi vismaz vienam no norādītajiem dokumentu aprakstiem, kas vienāds ar norādīto taimauta intervālu.

Sistēmas zvana atlases piemērs:

Pieņemsim vienkāršu piemēru, lai pārbaudītu atlasītās sistēmas izsaukuma darbību. Atveriet komandrindas apvalku, izmantojot “Ctrl + Alt + T.Pēc termināļa atvēršanas pārliecinieties, vai jūsu sistēmā ir instalēts C valodas kompilators, jo kods bez tā nedarbosies. Ja jums tāda nav, izmēģiniet zemāk esošo komandu, lai to izdarītu.

$ sudo apt instalējiet gcc

Ja vēlaties, lai Linux atlasītās sistēmas izsaukums darbotos, jūsu sistēmā jābūt instalētai pakotnei manpages-dev, kā norādīts zemāk. Uzrakstiet savu lietotāja paroli, lai turpinātu.

$ sudo apt instalējiet manpages-dev

Izmantojot zemāk esošo komandu “man”, jūs varat redzēt izvēlētās sistēmas izsaukuma sintaksi un darbību.

$ man 2 atlasiet

Izvades rokasgrāmatas lapa atlasītajam sistēmas zvanam ir parādīta zemāk. Aizveriet to, nospiežot taustiņu “q”.

Select () modulis atbalsta visus standarta direktorijus, komandu čaulas termināļus un pseidoterminālu lietojumprogrammas, STREAMS centrētos dokumentus, FIFO, ieskaitot caurules. Select () darbība dokumentu aprakstos, kas attiecas uz šiem citiem failu formātiem, nav zināma. Tātad zemāk ir Sistēmas zvana skaidrojums.

Iepriekš attēlā parādītais sintakses apraksts ir aprakstīts zemāk.

Iepriekš ir bibliotēka, kas jāiekļauj C kodā, izmantojot izvēlēto sistēmas zvanu. Ja tas nav iekļauts, kods nedarbojas.

The nfds paziņojums nosaka faila deskriptoru kopu, kas tiks novērtēta. Metode select () pārbauda failu aprakstus no 0 līdz nfds-1.

Kamēr readfds nav nulle, tas attiecas uz veidlapas fd_set masīvu, kas nosaka, kuru dokumentu deskriptoru gatavība lasīt ievadā jāpārbauda un kuriem dokumentu deskriptoriem jābūt iestatītiem lasīšanai izvadē.

Kad writefds parametrs nav tukšs, tas attiecas uz formas fd_set entītiju, kas nosaka, kuri dokumentu deskriptori jāpārbauda attiecībā uz gatavību ievadīt ievadi. Dokumentu aprakstiem jābūt gataviem sastādīt izvadē.

Kamēr errorfds parametrs nav tukšs, tas attiecas uz objekta veida fd_set, kas nosaka, kuri dokumentu deskriptori jāpārbauda, ​​lai gaidītu kļūdu lietu ievadi; arī dokumentu apraksti jāpārbauda izvadā.

Readfds, writefds un errorfds parametri pēc pabeigšanas tiek atjaunināti, lai norādītu, ka dokumentu deskriptori ir sagatavoti lasīšanai, pilnībā sagatavoti rakstīšanai vai pat gaida izņēmuma stāvokli. Ja nākamais bits ir fiksēts ieejā un attiecīgā situācija ir derīga katram faila aprakstam nedaudz zem nfds, nākamais bits tiks efektīvi izpildīts.

Lai gan taimauta parametrs nav īsti tukšs, tas noved pie struktūras laika entītijas, kas nosaka augstāko laiku, kad turēt uguni, lai izvēle tiktu pabeigta. Select () nav īsti šķērslis, ja šāds taimauta parametrs noved pie struktūras laika objekta ar 0 elementiem. Atlasīt () apstājas, ja vien notikums neļauj iegūt vienu no filtriem ar patiesu (nav nulles) rezultātu neatkarīgi no tā, vai taimauta paziņojums ir tukša atsauce. Select () veiksmīgi izdodas un rada 0, kad gaidīšanas periods beidzas pat pirms iestāšanās, kas var prasīt, lai viena no vairākām maskām tiktu pielāgota vērtībai, kas nav nulle.

Šis makro novērš kolekciju (izdzēš visus dokumentu aprakstus). To var izmantot kā pirmo kustību dokumentu deskriptoru kolekcijas inicializācijā.

Dokumenta deskriptoru fd kolekcijai pievieno šis makro. Dokumenta deskriptora izmantošana kolekcijai, kas jau pastāv, nedarbojas un tāpēc neizraisa izņēmuma kļūdu.

Šis makro no kolekcijas noņem dokumenta deskriptoru fd. Failu deskriptors, kas izņemts no kolekcijas un kura neeksistē, nedarbojas un tāpēc neizraisa izņēmumu.

Sistēmas izsaukums select () maina kolekciju informāciju vai datus atbilstoši iepriekš minētajiem noteikumiem. FD ISSET () makro var atcelt, izsaucot select (), lai pārliecinātos, vai dokumenta deskriptors joprojām ir pieejams kolekcijā.

Izveidosim jaunu C tipa failu ar nosaukumu “jauns.c ”, kā norādīts zemāk.

$ nano jauns.c

GNU redaktors ir atvērts. Uzrakstiet tajā zemāk esošo kodu. Kods satur galvenes, galveno funkciju ar dažiem failu aprakstiem, kā aprakstīts iepriekš. Tas satur arī laika intervāla vērtības struktūru. Tad mēs izmantojām izvēlēto sistēmas zvanu, lai pārbaudītu kļūdu paziņojumā “ja”. Nospiediet “Ctrl + S”, lai saglabātu šo kodu, un “Ctrl + X”, lai aizvērtu redaktoru.

Tagad apkopojiet kodu, izmantojot “gcc” instrukciju.

$ gcc jauns.c

Palaidiet kodu un nepievienojiet nevienu ievadi. Rezultātā būs teikts “select timeout.”

$ ./ a.ārā

Atkal palaidiet kodu un ievadiet termināli, piemēram,.g., “Aqsa.”Tas parādīs, ka“ dati ir pieejami.”

Secinājums:

Mēs esam ieviesuši izvēlēto sistēmas izsaukumu Ubuntu 20.04 Linux sistēma. Kodam vajadzētu vienādi un pareizi darboties visos Linux izplatījumos. Ceru, ka šo rakstu jums būs viegli īstenot un saprast.

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, ...