C Programiranje

Kako uporabljati Izberite sistemski klic v C

Kako uporabljati Izberite sistemski klic v C
Sistemski klic select () omogoča sistemu, da spremlja več deskriptorjev datotek. Torej, izbrani sistemski klic počaka, da se eden od deskriptorjev ali celota izkaže za »pripravljenega« za določeno vrsto V / I dejavnosti (npr.g., možen vnos). Če je poznejši V / I postopek (npr.g., read (2)) je mogoče izvesti kljub blokiranju, deskriptor datoteke se šteje za sposobnega. Metoda select () opisuje, ali je deskriptor dokumenta na voljo za branje, pripravljen za pisanje ali v izjemnem stanju. Recimo, da je navedena situacija za popolnoma navedene deskriptorje datotek napačna. V tem primeru sistemski klicni bloki select () pred omenjenimi okoliščinami veljajo za najmanj enega od navedenih deskriptorjev dokumentov, enak navedenemu intervalu časovne omejitve.

Primer za izbrani sistemski klic:

Imejmo preprost primer, da preverimo delovanje izbranega sistemskega klica. Odprite lupino ukazne vrstice z uporabo »Ctrl + Alt + T«.”Po odprtju terminala preverite, ali je v vašem sistemu nameščen prevajalnik za jezik C, ker koda brez njega ne bo delovala. Če ga nimate, poskusite spodnji ukaz, da to storite.

$ sudo apt namestite gcc

Če želite, da sistemski klic Linux select deluje, morate v sistemu namestiti paket manpages-dev v skladu s spodnjim ukazom. Za nadaljevanje napišite svoje uporabniško geslo.

$ sudo apt install manpages-dev

Sintakso in delovanje izbranega sistemskega klica si lahko ogledate s spodnjim ukazom »man«.

$ man 2 izberite

Izhodna man stran za izbrani sistemski klic je prikazana spodaj. Zaprite ga s pritiskom na tipko “q”.

Standardni imeniki, terminali ukazne lupine in psevdo-terminalne aplikacije, dokumenti, osredotočeni na STREAMS, FIFO, vključno s cevmi, podpira modul select (). Dejavnost select () na deskriptorjih dokumentov, ki se sklicuje na te druge oblike datotek, ni znana. Spodaj je torej razlaga sistemskega klica Select.

Opis sintakse, prikazan na zgornji sliki, je opisan spodaj.

Zgoraj je knjižnica, ki jo je treba vključiti v kodo C med uporabo izbranega sistemskega klica. Če ni vključena, koda ne deluje.

The nfds stavek definira niz opisnih datotek, ki bo ocenjen. Metoda select () preverja deskriptorje datotek med 0 in nfds-1.

Medtem readfds ni null, se nanaša na niz obrazca fd_set, ki določa, katere deskriptorje dokumentov je treba preizkusiti glede pripravljenosti za branje na vhodu in katere deskriptorje dokumentov je treba nastaviti na branje.

Ko writefds parameter ni prazen, nanaša se na entiteto oblike fd_set, ki določa, katere deskriptorje dokumentov je treba preizkusiti, ali je pripravljen za vpis na vhod. Deskriptorje dokumentov je treba pripraviti za sestavljanje ob izhodu.

Medtem ko errorfds parameter ni prazen, nanaša se na objekt vrste fd_set, ki določa, kateri deskriptorji dokumentov naj se preizkusijo, da pričakujejo stanje napak pri vnosu; prav tako je treba deskriptorje dokumentov preveriti ob izhodu.

Parametri readfds, writefds in errorfds se po dokončanju posodobijo, kar pomeni, da so deskriptorji dokumentov pripravljeni na branje, v celoti pripravljeni na pisanje ali celo čakajo na stanje izjem. Če je nadaljnji bit pritrjen na vhodu in je ustrezna situacija veljavna za vsak deskriptor datoteke malo pod nfds, bi bil naslednji bit postavljen na učinkovito izvedbo.

Čeprav parameter timeout v resnici ni prazen, vodi do entitete strukture timeval, ki določi največji čas, da zadržite ogenj, da se odločitev konča. Select () ne ovira povsem, če tak parameter časovne omejitve vodi do objekta timeval strukture z 0 elementi. Select () se ustavi, razen če pojav omogoča, da je eden od filtrov pridobljen z resničnim (ne nič) rezultatom, ne glede na to, ali je stavek časovne omejitve prazen sklic. Select () uspe učinkovito in ustvari 0, ko se čakalna doba konča, še preden se zgodi, kar lahko zahteva, da se ena od več mask prilagodi vrednosti, ki ni nič.

Ta makro odstrani zbirko (izbriše vse deskriptorje dokumentov). Uporablja se lahko kot prvi korak pri inicializaciji zbirke deskriptorjev dokumentov.

Ta makro v zbirko doda deskriptor dokumenta fd. Uporaba deskriptorja dokumenta za zbirko, ki je že obstajala, ne bi delovala in zato ne povzroči napake v izjemi.

Ta makro iz zbirke odstrani deskriptor dokumenta fd. Deskriptor datoteke, izločen iz zbirke, ki ne obstaja, ne deluje in zato ne povzroči izjeme.

Sistemski klic select () spremeni informacije ali podatke zbirk v skladu z zgoraj omenjenimi pravili. Makro FD ISSET () se lahko odvrne s klicem select (), da preverite, ali je opisnik dokumenta na voljo v zbirki.

Ustvarimo novo datoteko tipa C z imenom »novo.c "kot spodaj.

$ nano novo.c

Odprl se je urejevalnik GNU. Vanjo zapišite spodnjo kodo. Koda vsebuje glave, glavno funkcijo z nekaterimi deskriptorji datotek, kot je opisano zgoraj. Vsebuje tudi strukturo vrednosti časovnega intervala. Nato smo z izbranim sistemskim klicem preverili napako v stavku »if«. Pritisnite "Ctrl + S", da shranite to kodo, in "Ctrl + X", da ne zapustite urejevalnika.

Zdaj prevedite kodo z navodili »gcc«.

$ gcc novo.c

Zaženite kodo in ne dodajajte nobenega vnosa. Na izhodu bo pisalo »izberite časovno omejitev."

$ ./ a.ven

Spet zaženite kodo in vnesite nekaj vnosa v terminal, npr.g., »Aqsa."Izšlo bo, da so" podatki na voljo."

Zaključek:

Izvedli smo sistemski klic select na Ubuntu 20.04 Linux sistem. Koda mora delovati na vseh distribucijah Linuxa enako in pravilno. Upam, da vam je ta članek enostaven za uporabo in razumevanje.

S temi brezplačnimi orodji dodajte gibe miške v sistem Windows 10
V zadnjih letih so se računalniki in operacijski sistemi močno razvili. Včasih so morali uporabniki uporabljati ukaze za krmarjenje po upraviteljih da...
Nadzirajte in upravljajte gibanje miške med več monitorji v sistemu Windows 10
Upravitelj miške z dvojnim zaslonom vam omogoča nadzor in konfiguriranje gibanja miške med več monitorji, tako da upočasni gibanje blizu meje. Windows...
WinMouse vam omogoča prilagajanje in izboljšanje premikanja kazalca miške v računalniku z operacijskim sistemom Windows
Če želite izboljšati privzete funkcije kazalca miške, uporabite brezplačno programsko opremo WinMouse. Dodaja več funkcij, s pomočjo katerih boste kar...