C setPGID -funksjonsbruk

C setPGID -funksjonsbruk
Hver gang vi går inn i Shell -kommandoen, startes en ny prosess i økten. Systemet tildeler deretter en prosessidentifikator (PID) og en prosessgruppeidentifikator (PGID). PID indikerer prosess -ID, mens PGID beskriver prosessgruppe -ID for enhver oppgave som for øyeblikket utføres av systemet eller fremdeles i prosess. SetPgid () er en funksjon som er relevant for dette. Som navnet indikerer, brukes det enten til å legge til den eksisterende prosessgruppen eller, i et annet tilfelle, for å lage en ny gruppe prosesser i samme økt i anropsprosessen. Gruppe -ID for prosessen med lederen for økten er alltid den samme. Det er ikke endret.

Denne funksjonen brukes til å angi PGID (Process Group ID) innenfor økningen i anropsprosessen slik at vi kan tildele eller tilordne prosessen til forskjellige prosessgrupper. For å starte en ny prosessgruppe med en bestemt prosess som gruppeleder, hjelper denne funksjonen også i dette aspektet. Denne artikkelen vil fremheve opprettelsen og arbeidet med setPgid () -funksjonen.

Beskrivelse

Prosess -IDen er en ID som eksisterer innenfor økten av en samtaleprosess. Det er IDen hvis PGID vi ønsker å endre. Det kan være enten den som ringer av setPgid () eller kan være barna til det. PID kan ikke være sesjonslederen som skal endres.

PGID er derimot den nye IDen vi ønsker å tildele den aktuelle prosessen som er spesifisert av PID. Hvis PGID peker mot den eksisterende prosessgruppen, må den være til stede inne i økten til den som ringer. Den nye gruppen er også opprettet i innringersøkten.

Syntaks

#inkludere
int setPGID (pid_t, pgid);

Funksjonen setPgid () er til stede i bibliotekfeltet. Og dette er inkludert i det er derfor vi bruker dette biblioteket her. I parameterdelen av funksjonen er både ID -ene (PID, PGID) skrevet. Begge tilhører prosess -IDen vi ønsker å angi eller den vi vil være med eller opprette.

Fakta og funksjoner ved setPGID () -funksjonen

Som diskutert tidligere, setter setPgid () gruppe -ID for en prosess som PID spesifiserer for prosessgruppe -ID. Noen ganger eksisterer det noen omstendigheter der alle gruppene av prosesser ligger i samme økt. Dette skjer når en prosess tas fra en gruppe til en annen gjennom setPgid (). I denne situasjonen spesifiserer PGID den eksisterende prosessgruppen og blir med i den.

GetPgid () er en funksjon som setPgid (). Syntaksen for begge prosessene er den samme, inkludert funksjonssamtaler. Som begge disse funksjonene, er getPgrp () og getPgid (0) på samme måte som tilsvarer hverandre.

Bruk av prosesgrupper

Prosessgrupper jobber for å distribuere signalene for å videresende og tilskrive forespørslene for innspillet. De prosessene som har de samme prosessgruppene er forgrunnen og kan leses, mens de andre prosessene vil bli blokkert med et signal hvis de blir forsøkt å bli lest.

Returverdi

Når funksjonsanropet blir gjort, og prosessen utføres, returnerer SetPGID () og SetPGRP () null når feilen oppstår, og funksjonen returnerer -1. Etter at feilsignalet er bestått. GetPgid () og getPgrp () er assosiert med setPGID (). Så getPgid () returnerer en prosessgruppe når du gjør det. På feil gir det -1. Mens GetPGRP () -funksjonen alltid gir prosessgruppen for øyeblikket i bruk.

For å implementere noen eksempler, bruk en tekstredigerer og Linux -terminal i det aspektet. Vi vil skrive kode i tekstredaktørene og deretter se resultatet i Linux -terminalen.

Eksempel 1

For det første vil vi bruke det samme biblioteket beskrevet ovenfor i guiden, som er viktig for å utføre koden.

#inkludere

I hovedprogrammet blir returtypen tatt som et heltall. Det er ikke ugyldig fordi funksjonen vil returnere verdien i form av et heltall som prosess -ID -er. Vi bruker hvis vi må bruke en kontroll av feil. Den første linjen i uttalelsen kaller setPgid () med argumentet fra en annen funksjon getPid (). Denne funksjonen vil få IDen som vi vil sette. Hvis den returnerte verdien er '-1', betyr det at det har oppstått en feil slik at prosessen blir avsluttet.

If (setPgid (getPid (), 0) == -1)

Dette vil da igjen kalle den samme setPgid -funksjonen for å tilbakestille standard -ID for prosessen. Men hvis tilstanden er sann, betyr det at den returnerte verdien er 0, så kalles både funksjonen for prosess -ID getPid (), og gruppeprosess -ID getPGRP () kalles.

Lagre filen med C -utvidelse og se utdataene gå til Linux -terminalen; Kildekode vil bli samlet og deretter utført gjennom en GCC -kompilator. En inndatafil brukes som er en kildekode, og en fil brukes til å vise utdataene. 'fil. c 'er navnet på en fil.

$ Gcc -o filfil.c
$./fil

Koden blir utført med hell når vi kjører koden, og prosess -ID og prosessgruppe -ID -er oppnås. Begge ID -ene er de samme, noe som betyr at begge ligger i samme økt. Hver gang du utfører koden, vil de resulterende ID -ene være forskjellige.

Eksempel 2

Her vil vi bruke en gaffel () i kildekoden. Ettersom gaffel () -funksjonen brukes til å lage en ny prosess, kjører barneprosessen og denne barneprosessen samtidig med sin overordnede prosess. Dette er en annen metode for å sette ID og gruppe -ID -er for de nyopprettede prosessene. Først må vi initialisere en variabel for å sjekke om feilen eksisterer eller ikke. Hvis det eksisterer, blir det bestått et feilsignal. Og i den andre-hvis-delen kalles gaffelfunksjonen. Hvis prosess -ID er lik gaffelen returnerer 0, betyr det at den nye prosessen opprettes.

If ((pid = gaffel ()) == 0)

Alle gruppe -ID -ene til et barn vil bli vist før de venter og etter det. Tilsvarende vil foreldreprosess -ID -ene vises; Disse oppnås gjennom getPid () -funksjonen. Til slutt vil setPGID () -funksjonen bli kalt hvis den ikke er null, så blir en feil bestått.

Nå får vi se resultatet. Alle prosess -ID -ene og prosessgruppe -ID -ene vises. Ved hjelp av gaffel () vises foreldre-barn-ID-er separat. Først vises både foreldre- og barneprosess -ID før ventetiden og deretter etter den fortløpende.

Konklusjon

Artikkelen 'C: SetPGID -funksjonsbruk' er en artikkel som inneholder den grunnleggende beskrivelsen angående SetPGID () -funksjonalitet og både prosess -ID og gruppeprosess -ID -oppretting og bruk. Noen feil er årsakene til å stoppe prosessen kan være søkefeilene som ikke finner noen eksisterende ID, så tildeles prosess -ID for den gjeldende prosessen automatisk. Vi håper denne innsatsen vil hjelpe deg i dine arbeidsvilkår på programmeringsspråket C.