Eksempel 01:
Åpne og logge inn fra Ubuntu 20.04 og lanser applikasjonen som heter “Terminal” fra aktivitetsområdet. Dette kan gjøres ved å bruke en enkel nøkkel snarvei “Ctrl+Alt+T” på skrivebordet ditt. Opprett en C-Type-fil for å implementere PRCTL () systemanropet, utfør kommandoen som vises i snapen under.
$ Touch Prtcl.c
La oss åpne filen etter en GNU Nano -redaktør i henhold til den viste instruksjonen.
$ nano prtcl.c
Legg til koden som vises i Snap -bildet under i GNU -filen. Koden inneholder nødvendige overskriftsfiler for å jobbe med en PRCTL () -kode. Så har vi opprettet og definert 4 tråder som heter Process1, Process2, Process3 og Process4. Alle de 4 prosessene eller funksjonene inneholder tomrommet som en generell eller signaturparameter, men det kan være noe annet. Som vi har utdypet før, vil den første parameteren til "PRCTL ()" -systemanropet vise hva vi har å gjøre med anropsfunksjonen. Så vi har kalt PRCTL () i alle 4 metoder for å angi en prosess ved å bruke "pr_set_name" -argumentet ". Etter to sekunders søvn vil PUTS -funksjonen bli utført for å angi navnet på en prosess.
Da har vi erklært en peker av array -typen som heter “FP”, og dens elementer inneholder navnene på 4 metoder eller prosesser. Hovedmetoden erklært en variabel "ID" her indikerer prosesser. "For" -sløyfen har blitt brukt her for å lage en barneprosess for alle overordnet prosess ved å bruke "gaffel ()" -metoden og lagre den til variabel "int". "IF" -uttalelsen har blitt brukt for å sjekke om "ID" er 0. Hvis tilstanden møtes, vil den skrive ut barneprosessnummeret, og "FP" -arrayen vil bli brukt som en metode for å hente det første elementet, prosess 1, og så videre til sløyfen er slutt. Kall av metoder på denne måten vil få den til å utføre alle metodene definert ovenfor.
Kompilere filen først.
$ GCC PRCTL.c
Utførelsen av filen viser utdata nedenfor. Navnet er satt for hver prosess.
$ ./en.ute
Eksempel 02:
La oss ha en annen illustrasjon av PRCTL. La oss åpne PRCTL.C -fil.
$ nano prctl.c
Etter at overskriftene er inkludert, er metoden “CAP_1” blitt initialisert. Filbeskrivelsen “F” er blitt definert, og en variabel “res” er initialisert med en verdi “-1”. Nå vil filbeskrivelsen brukes til å få maksimal evne fra kjernen. Filbeskrivelsen åpner filen som skrivebeskyttet fra kjernen mappen. Hvis filbeskrivelsen får mer enn 0 tegn, vil "BUF" -arrayen bli definert med størrelse 32. To heltall er definert, og lesemetoden har blitt brukt for å få dataene fra bufferen ved hjelp av filbeskrivende og lagret i variabelen “Num”. Hvis den variable “num” -verdien er større enn 0, vil den indeks-matchede verdien av variabel “num” bli initialisert som null. “SSCANF” -metoden vil binde “Res” -pekeren med “BUF” -arrayen og lagre den innenfor variabel “R”. Det er slik maksimal evne kan fås fra kjernen. Hvis verdien for variabel “r” ikke er lik 1, vil den oppdatere verdien av “res” med “-1” igjen. Til slutt har beskrivelsen blitt stengt.
Den andre metoden, “CAP_2” har blitt brukt til å initialisere mulighetsvariabelen tilsvarer 0. PRCTL () -metoden bruker “PR_CAPBSET_READ” for å lese maksimal evne. Hvis mulighetens verdi er større enn 0, vil den bli økt. Når evnen kommer til 0, vil den stoppe økningen og returnere “CP” -verdien med en reduksjon på 1.
Hovedmetoden er å få muligheten fra “CAP_1” og CAP_2 og skrive den ut etter tilstanden er oppfylt.
Samlingen og kjøringen av denne filen viser at den maksimale kapasitetsverdien er 40.
$ GCC PRCTL.c
$ ./en.ute
Konklusjon:
I denne guiden har vi diskutert to eksempler for å utdype PRCTL () systemanropet i C. Det vil hjelpe deg mye som vi har demonstrert det med to forskjellige argumenter.