C Programmering

Hvordan bruke avstemningssystemanrop i C

Hvordan bruke avstemningssystemanrop i C
Meningsmåling () -funksjonen lar programmer multiplexere inn- og utdata gjennom en serie filbeskrivere. Med andre ord, meningsmåling () systemanrop er analogt med å velge () systemanrop når det holder ild for en av flere filbeskrivere ved å bli tilgjengelig for I / O. Avstemning () undersøker den tildelte dokumentbeskrivelsen for oppføring av hendelsen / hendelsene i hendelser til hvert element i matrisen som peker til den av filbeskrivere. Poll () -metoden kan avgjøre hvilken av filbeskrivelsene et program vil lese eller skrive detaljer til, som har sett disse hendelsene. I denne guiden bruker vi Ubuntu 20.04 for å forstå begrepet poll () systemkall på Linux trinn for trinn.

Syntaks:

int poll (struct pollfd * ufds, usignert int nfds, int timeout);

Argumentet "fds" bestemmer dokumentbeskrivelsene som skal kontrolleres, samt hendelsene som er viktige for hver enkelt. Det er en referanse til enten en matrise som har ett element for hver åpne dokumentbeskrivelse. Elementene til matrisen er pollfd-strukturer, der fd betegner en åpen dokumentbeskrivelse, og alle hendelser og re-events, vanligvis kalt bitmasker, genereres ved å lage en sammenslåing av de tilsvarende hendelsesflaggene:

POLLIN:

Bortsett fra data med høy prioritet, kan informasjonsdata leses ut fratatt til og med å bli blokkert. Også, hvis svarmeldingen har null størrelser, genereres dette flaggsignalet for STREAMS in revents. Dette flagget har samme betydning som POLLRDNORM | POLLRDBAND.

POLLRDNORM:

Uten avbrudd kan ordinær informasjonsdata leses ut. Informasjon om prioritetsbånd 0 kan leses til tross for avbrudd for STREAMS. Og hvis svarmeldingen har null lengde, genereres dette signalet i ny hendelser.

POLLRDBAND:

Data om primær bekymring vil bli lest ut til tross for at det medfører forsinkelser. Informasjon om prioriterte områder større enn null kan leses til tross for forstyrrelser i STREAMS. Og hvis meldingsresponsen har null varighet, blir dette signalet spredt i omvendelser.

POLLPRI:

Det kan være noen unntak fra dokumentbeskriveren. Informasjon med topprioritet kan leses fratatt blokkering. Også, hvis svaret er null varighet, blir dette signalet spredt for STREAMS i revolusjoner.

POLOUT:

Brukere kan skrive ut ved hjelp av POLLOUT-flagget. Uten å stoppe, kan typiske data registreres. Informasjon om preferansebånd 0 kan registreres til tross for avbruddet i STREAMS.

POLLWRNORM:

Det fungerer det samme som POLLOUT.

POLLWRBAND:

De mest prioriterte dataene skrives med dette flagget. Informasjon om preferanseområder større enn null for STREAMS kan registreres uten å bli blokkert. Denne aktiviteten evaluerer bare band som allerede er skrevet til minst en gang siden det ikke er skrevet noe preferansebånd på denne STREAM.

POLLERR:

Det er en feiltilstand og oppstår bare når systemet eller strømmen har fått et problem. Dette symbolet gjelder bare for avsluttende bitmaske; gjennom aktivitetsdeltakeren blir det oversett.

POLLHUP:

Den angir opphengstilstanden og skjer bare når forbindelsen til systemet er deaktivert. Denne forekomsten og POLLOUT er like kompatible; når et problem har oppstått, vil det aldri bli skrevet en strøm.

POLLNVAL:

Dette spesifiserer den ugyldige eller uvanlige forespørselen. Denne aktiviteten ekskluderer likevel ikke deltakelse i POLLIN, POLLRDNORM, POLLRDBAND eller POLLPRI. Dette symbolet gjelder bare for avsluttende bitmaske; det blir oversett hos deltakeren av arrangementet.

Eksempel på avstemningssystemanrop:

Den utfører samme rolle som select (), men i større skala. Avstemning () er tilgjengelig på alle Glibc-baserte Linux-maskiner. De eldre kjernene imiterer avstemning () med select () i hele C-biblioteket. Imidlertid trenger ikke programmene å skille. Her er et eksempel på hvordan meningsmåling () føles. Så åpne kommandolinjeterminalen først ved hjelp av hurtigtasten “Ctrl + Alt + T.”Etter at vi har åpnet den, må vi lage en C-type fil for å skrive en C-type kode i den. For dette har vi brukt nano-editoren. Så prøv ut nano-kommandoen nedenfor i terminalen sammen med navnet på C-filen.

$ nano ny.c

Nå er nano-editoren for C-filen “ny” blitt åpnet. Du må først inkludere noen biblioteker i den, spesielt “avstemningen.h ”bibliotek. Hovedfunksjonen har blitt spesifisert som å ha en heltalsreturtype med to argumenter i parameteren, f.eks.g., argc og argv. Så har vi erklært en filbeskrivelse fd og en tegntypematrise som heter “buf.”Etter det har en strukturtypevariabel blitt definert kalt pollfd pfds av størrelse 2. Deretter er en åpen systemanrop erklært for å hente verdien fra tegntypearrayen og tildele den til filbeskrivelsen "fd" som vist på bildet. Mens filbeskrivelsen er "1", vil strukturen "pfds" bli oppdatert med noen data i den ved hjelp av POLLIN-flagget i den. Nå har vi definert en poll () systemanropsfunksjon. Den første parameteren for systemanropet til avstemningen () er ufds-strukturen som brukes i koden. Den andre parameteren spesifiserer summen av pollfd-strukturer i fds-serien.

Og den siste parameteren viser timeout-verdien for heltallstypen for avstemningssystemanropet. Hvis pfds blir revented og lagt til med en verdi på 0, vil den lest systemanropet lese opp dataene fra bufferen. "If" -uttalelsen vil bli brukt til å sjekke om den lest-setningen har returnert verdien til et helt tall og skrive data. Hvis strukturen "pfds" er i posisjon "1" mens du nøler og legger inn dataene, vil det leste systemanropet bruke dataene fra en buffer mens du bruker "fd" -beskrivelsen.

Lagre det nye.c-fil og lukk den. Nå kompilerer du den ved hjelp av gcc-kompilatoren.

$ gcc ny.c

Mens vi utførte denne koden, la vi til data i en avstemning som skulle leses ut, og den skriver data igjen som i utdataene nedenfor.

$ ./en.ute

Konklusjon:

I denne artikkelen som er beskrevet ovenfor, har vi diskutert systemanrop for avstemning () på C-språk. Jeg håper du synes denne opplæringen er nyttig og effektiv mens du jobber med Linux-operativsystemet.

Mus Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Musepekeren og markøren i Windows 10 er veldig viktige aspekter ved operativsystemet. Dette kan sies også for andre operativsystemer, så i sannhet er ...
Gratis og åpen kildekode-spillmotorer for utvikling av Linux-spill
Denne artikkelen vil dekke en liste over gratis og open source-spillmotorer som kan brukes til å utvikle 2D- og 3D-spill på Linux. Det er mange slike ...
Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider er det tolvte tilskuddet til Tomb Raider-serien - et action-eventyrspill-franchise opprettet av Eidos Montreal. Spillet ble ...