Men barnet og foreldreprosessene ligger på forskjellige minneområder. Disse minneområdene har samme innhold, og uansett hvilken operasjon som utføres av den ene prosessen, vil ikke påvirke den andre prosessen.
Når barneprosessene opprettes; Nå vil begge prosessene ha samme programteller (PC), så begge disse prosessene vil peke på den samme neste instruksjonen. Filene som er åpnet av overordnet prosess vil være de samme for barneprosessen.
Barneprosessen er nøyaktig den samme som foreldrene, men det er forskjell i prosessene ID -er:
Egenskaper ved barneprosess
Følgende er noen av egenskapene som en barneprosess har:
Egenskaper som ikke er arvet etter barneprosess
Følgende er noen av egenskapene som ikke er arvet av en barneprosess:
gaffel () i C
Det er ingen argumenter i gaffel () og returtypen gaffel () er heltall. Du må ta med følgende toppfiler når gaffel () brukes:
#inkludereNår du jobber med gaffel (), kan du brukes til type pid_t for prosesser ID -er som PID_T er definert i .
Hodefilen er hvor gaffel () er definert, så du må inkludere den til programmet ditt for å bruke gaffel ().
Returtypen er definert i og gaffel () samtalen er definert i . Derfor må du inkludere både i programmet ditt for å bruke gaffel () systemanrop.
Syntaks av gaffel ()
Syntaks av gaffel () systemanrop i Linux, Ubuntu er som følger:
pid_t gaffel (tomrom);I syntaks er returtypen pid_t. Når barneprosessen opprettes vellykket, returneres PID for barneprosessen i foreldreprosessen og 0 vil bli returnert til selve barneprosessen.
Hvis det er noen feil, returneres ikke -1 til overordnede prosessen og barneprosessen opprettes ikke.
Ingen argumenter føres til gaffel ().Eksempel 1: Ringer gaffel ()
Tenk på følgende eksempel der vi har brukt gaffel () systemanrop for å lage en ny barneprosess:
#inkluderePRODUKSJON:
sysads@linuxhint $ gcc gaffel.C -o gaffelI dette programmet har vi brukt gaffel (), dette vil skape en ny barneprosess. Når barneprosessen opprettes, vil både foreldreprosessen og barneprosessen peke på neste instruksjon (samme programteller). På denne måten vil de gjenværende instruksjonene eller C -uttalelsene bli utført det totale antallet prosesstider, det vil si 2n ganger, der n er antallet gaffel () systemanrop.
Så når gaffel () samtalen brukes en gang som ovenfor (21 = 2) Vi vil ha produksjonen 2 ganger.
Her når gaffel () systemanrop brukes, vil den interne strukturen se ut som:
Tenk på følgende tilfelle der gaffelen () brukes 4 ganger:
#inkludereProduksjon:
sysads@linuxhint $ gcc gaffel.C -o gaffelNå er det totale antallet prosessen som er opprettet 24 = 16 og vi har utskriftserklæringen utført 16 ganger.
Eksempel 2: Testing hvis gaffel () var vellykket
I det følgende eksemplet har vi brukt beslutningstakingskonstruksjonen for å teste verdien (int) returnert med gaffel (). Og de tilsvarende meldingene vises:
#inkluderePRODUKSJON:
sysads@linuxhint $ gcc gaffel.C -o gaffelI eksemplet ovenfor har vi brukt typen PID_T som vil lagre returverdien på gaffelen (). gaffel () kalles online:
p = gaffel ();Så heltallverdien som returneres med gaffel () lagres i P, og deretter blir P sammenlignet for å sjekke om gaffelen () samtalen var vellykket.
Når gaffelen () samtalen brukes og barnet opprettes med suksess, vil IDen til barneprosessen bli returnert til overordnet prosess og 0 vil bli returnert til barneprosessen.IDen til barneprosessen i overordnet prosess vil ikke være den samme som ID for barneprosessen i selve barneprosessen. I barneprosess vil ID for barneprosess være 0.
Med denne opplæringen kan du se hvordan du kommer i gang med gaffelsystemanropet i Linux.