Fig 1: Grunnleggende gaffel () arbeidsflyt
I denne artikkelen skal jeg vise deg hvordan du bruker gaffel () systemanrop for å lage barneprosesser i C. Så la oss komme i gang.
gaffel () Syntaks og returverdi:
Syntaksen til gaffel () systemfunksjonen er som følger:
pid_t gaffel (tomrom);Gaffel () systemfunksjonen godtar ikke noe argument. Det returnerer et heltall av typen pid_t.
Ved suksess, Returnerer gaffel () PID på barneprosessen som er større enn 0. Inne i barneprosessen er returverdien 0. Hvis gaffel () mislykkes, kommer den tilbake -1.
Enkel gaffel () Eksempel:
Et enkelt gaffel () eksempel er gitt nedenfor:
#inkludereHer brukte jeg gaffel () for å lage en barneprosess fra hoved-/overordnet prosess. Deretter trykte jeg PID (prosess -ID) og PPID (foreldreprosess -ID) fra barn og foreldreprosess. På overordnede prosessen er vent (null) brukt til å vente på at barneprosessen skal fullføre. På barneprosessen brukes exit () til å fullføre barneprosessen. Som du kan se, er PID i overordnede prosessen PPID for barneprosessen. Så barneprosessen 24738 tilhører foreldreprosessen 24731.
Du kan også bruke funksjoner for å gjøre programmet ditt mer modulært. Her brukte jeg ProcessTask () og ParentTask () Funksjoner for henholdsvis barnet og overordnede prosesser. Slik brukes gaffel () faktisk.
#inkludereUtgangen fra ovennevnte program:
Kjører flere barneprosesser ved hjelp av gaffel () og loop:
Du kan også bruke sløyfe for å lage så mange barneprosesser du trenger. I eksemplet nedenfor har jeg laget 5 barneprosesser som bruker for loop. Jeg trykket også PID og PPID fra barneprosessene.
#inkludereSom du ser er foreldreprosess -IDen den samme i alle barneprosessene. Så alle tilhører samme foreldre. De kjøres også på lineær måte. Den ene etter den andre. Kontroll av barneprosesser er en sofistikert oppgave. Hvis du lærer mer om Linux -systemprogrammering og hvordan det fungerer, vil du kunne kontrollere flyten av disse prosessene uansett.
Eksempel på det virkelige liv:
Ulike komplekse matematiske beregninger som MD5, SHA256 osv. Hash -generasjon krever mye prosesseringskraft. I stedet for å beregne slike ting i samme prosess som hovedprogrammet, kan du bare beregne hasj på en barneprosess og returnere hasj til hovedprosessen.
I det følgende eksemplet har jeg generert en 4-sifret PIN-kode i en barneprosess og sendt den til overordnet prosess, hovedprogrammet. Deretter skrev jeg ut pin -koden derfra.
#inkludereSom du ser, hver gang jeg kjører programmet, får jeg en annen 4-sifret PIN-kode.
Så det er i utgangspunktet slik du bruker gaffel () systemanrop i Linux. Takk for at du leste denne artikkelen.