C artikler :: fork - kreer en ny process

Lær om hvordan du kreerer en ny process eller tråd (eng. thread).

Udover at fork() er et navn for gaffel, selvom ordet formodentligt er brugt i betydningen at dele eller forgrene sig, er dette den funktion med hvilken du sætter nye processer i gang. Det er et og samme program som indeholder koden til alle processerne, det gør fork() elegant at arbejde med. Programmet starter som en enkelt process som kaldes parent (forælder) og når denne process deler sig, med et kald til fork(), får vi en ekstra process vi kalder child (barn). Det er endog muligt, som i det virkelige liv, at lave flere end en child.

Parent-processen deler sin single process ud, med et kald til fork(), og child går ud på sin egen tur igennem koden. Normalt ledes child til sin egen kode fordi de hver har deres opgave. Som enhver ansvarlig forælder venter parent på at child vender hjem før lyset slukkes og familien går til ro. Hvis vi så skal afvige lidt fra idyllen, så dør child først og parent begår selvmord. Returværdien fra fork() afgør hvilken process der er tale om, returværdien antager tre stadier:

Returværdi Beskrivelse
-1 Fejl, child-processen kunne ikke startes
0 Child-process. Den process der får denne returværdi er nu child.
andet Parent-process.

Det er parent der skal vente på at child terminerer og det gør den med wait(). Hvis den undlader, f.eks. terminerer uforudset, vil child blive forælderløs. Det vil formodentlig ikke stimulere systemadministratorens velvillige instilling, at se et voksende antal af forældreløse processer. Men helt så galt er det ikke. Unix går ind, med sin process init og finder de stakkels efterladte child-process og sætter sig i værge rollen for dem. Den vil derefter stille sig til at vente på dem. Men det betyder ikke at det ikke kan gå galt, sæt nu en child-process ikke terminerer, derved vil parent eller evt. init vente forgæves. Her kan du beredde dig på sure miner fra sys.adm., fordi sys.adm. aktivt skal gå ind og slå processerne ihjel, hvis ikke du selv gør det. Selvfølgelig har Unix en sikkerhedsventil hvor den selv tager initiativ til at slå processer ihjel når dens ressourcer er udtømte, men det er ikke for mig muligt at sige at det ikke bliver mail-systemet, sql, web der lider den skæbne at blive slået ihjel. Desuden når Unix kommer til den grad af desperation, vil systemets performance lide gevaldigt under mangel på ressourcer.

 

Ressourcer C Library opslag The Single UNIX® Specification, Version 2 Copyright © 1997 The Open Group GNU C Library Engelsk, med masser af gode og dybe artikler. Danske søgeord Find selv de bedste danske søgeord til din hjemmeside.
Produkter Bookingsystem
System for reservation af tid for behandlinger, aftaler, lokaler, udstyr, personale. Tilpasset lektionstimer. Udskriver arbejdsplaner og ugeskema for opslag. Statistik. Danmarks bedste pris nu kun kr. 1.695,-
HelpdeskEffektiviser din support-organisation med et Helpdesksystem. Fjern tidrøvere der forhindrer fokus på problemløsning. Lektionsplan Formidling af generelle information og specifikke lektioner fra undervisere til studerende/elever. Medlemssystem Medlemssystem online med administration af medlemskartotek, kontingentbetalinger, flettefiler m.m.
Styr selv Styr selv indholdet på dine hjemmesider med Content Management System.
Citat Det er ædelt at undervise sig selv, men endnu ædlere at undervise andre - og mindre besværligt

Mark Twain



Professionelle løsninger til Internettet. Webdesign, e-handel, cms, søgeoptimering, webhotel, analyse, Intranet mm.