SEMCTL systemanrop i C

SEMCTL systemanrop i C
C -språket kommer med SEMCTL -systemanropet i Linux -systemet. Denne systemanropet har blitt mye brukt i Linux -systemet for å utføre kontrollprosessene som er spesifisert av konsollskallet på et bestemt semaforesett. Semaforene er kjent IPS som er mye brukt for å gi tilgang til prosesser for kommunikasjon med hverandre. Semafor kan være en variabel med abstrakt datatype for kontrolltilgang av 1 ressurs for mange prosedyrer. Derfor har SEMCTL -systemanropet blitt brukt her for å kontrollere semaforen settet. La oss starte med å registrere deg fra Linux -systemet.

Åpne konsollapplikasjonen fra søkeområdet. En rask alternativ måte å åpne konsollen på er via “Ctrl+Alt+T”.

Eksempel:

Opprett en ny C -fil i hjemmemappen til Linux -systemet med bruk av “Touch” -kommandoen. Vi har kalt denne C -filen som “SEMCTL.C ”. Du kan nevne det som du vil. Spørringen er som følger:

$ Touch Semctl.c

GNU Nano -redaktøren vil bli brukt til å redigere og åpne filen. Så, den angitte spørringen nedenfor har blitt brukt til å åpne “SEMCTL.c ”-fil.

$ nano semctl.c

Som vist på bildet under at filen allerede er åpnet i redaktøren. Skriv ut den samme koden i filen din for å se at "Semctl ()" -systemanropet fungerer. Hodefilen for input-output og semaforer er inkludert i starten av C-filen. Hovedmetoden er blitt erklært sammen med en annen funksjon, "get_val ()". Med utgangspunkt i hovedmetoden har vi definert en variabel “v” som får verdien fra get_val -funksjonen. Denne metoden er blitt kalt mens du har bestått med to argumenter i parametrene. Nå er kontrollen gitt til funksjonen get_val (). Denne funksjonen inneholder to argumenter, e.g. Sid som semafore ID og “Semnum” som semafornummer. De passerte verdiene 1 og 4 vil bli lagret i disse argumentene.

SEMCTL -kommandoen er blitt brukt innenfor funksjonen for å få det nåværende semaforet med semafor -ID og semafornummer. GetVal -funksjonen har blitt brukt her for å få den nåværende semaforverdien. Etter samlingen av en semaforverdi er den returnert til hovedmetoden. Verdien er lagret i variabelen “V”. Denne variableverdien vises ved hjelp av Printf -setningen som vises i C -koden. Du kan nå lagre den fullførte koden med “Ctrl+S” og la den ligge tilbake til konsollen ved å bruke snarveis -kommandoer “Ctrl+X”.

La oss kompilere “SEMCTL.c ”-fil i konsollen. Bruk den anbefalte “GCC” -kompilatoren for slike typer kompliserte C -koder. Samlingen returnerer advarselen, men det er ikke behov for panikk. Utfør filen din med “a.ut ”-kommando. Utgangen viser at den nåværende semaforverdien er "-1".

$ GCC SEMCTL.c
$ ./en.ute

La oss åpne filen igjen for å gjøre den annerledes litt. Åpne den ved hjelp av “Nano” -redigereren og definer variabelen “Max_Comps” med en viss verdi, e.g. 10. Denne gangen oppdater koden med det viste nedenfor skriptet. Start fra initialiseringen av hovedmetoden. Den inneholder funksjonssamtalen til metoden Comp_use (). Nå er kontrollen gitt til metoden Comp_use.

Funksjonen Comp_use inneholder “For” -løkken for å bruke den variable “max_comps” -verdien som en maks verdi til “for” -sløyfen. Inntil sløyfen avsluttes, vil utskriftserklæringen vise datamaskinnummeret. Den får og skriver også ut den nåværende semaforverdien fra metoden "get_val" ved å ringe den her. Get_Val -metoden ble utført og returnert sin verdi til utskriftserklæringen om funksjon comp_use () for å vise den på skjermen. Lagre kodefilen en gang til og avslutt den for å komme tilbake.

Nå må vi sammenstille den oppdaterte koden med “GCC” -kommandoen for sammenstilling. Etter den vellykkede samlingen har vi utført filen og fått semaforverdien for hver datamaskin.

$ GCC SEMCTL.c
$ ./en.ute

Konklusjon:

SEMCTL -systemanropet og dets arbeid har blitt demonstrert tydelig i denne guiden med C -språk ved bruk av Ubuntu 20.04 Linux -system. Vi håper du vil finne denne artikkelen nyttig mens du forstår og lærer begrepene semaforer i Linux -systemet.