Spawn (informatica)

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Spawn is in de informatica een functie om een nieuwe taak of nieuw proces te starten. De oorspronkelijke taak (parent) kan hierbij ofwel wachten tot deze nieuwe taak (child) is afgelopen, ofwel a-synchroon de eigen uitvoering (executie) vervolgen.

Er is een familie van spawnfuncties in DOS, later geërfd door Microsoft Windows.

Er is ook een andere familie van spawnfuncties in een optionele extensie van de POSIX-standaarden.[1]

DOS/Windows-spawnfuncties[bewerken]

De DOS/Windows-spawnfuncties zijn geïnspireerd op de Unix-functies fork en exec. Omdat deze besturingssystemen echter geen fork ondersteunden,[2] werd spawn geïntroduceerd. De spawnfunctie is wel minder krachtig dan de fork-exec-combinatie.

int spawnl(int mode, char *path, char *arg0, ...);
int spawnle(int mode, char *path, char *arg0, ..., char ** envp);
int spawnlp(int mode, char *path, char *arg0, ...);
int spawnlpe(int mode, char *path, char *arg0, ..., char ** envp);
int spawnv(int mode, char *path, char **argv);
int spawnve(int mode, char *path, char **argv, char ** envp);
int spawnvp(int mode, char *path, char **argv);
int spawnvpe(int mode, char *path, char **argv, char ** envp);

Elke functie begint met spawn gevolgd door een of meer letters:

Naam Opmerkingen
l Command-line-argumenten worden individueel meegegeven aan de functie.
v Command-line-argumenten worden als pointer array meegegeven.
p Gebruik het PATH-argument om het uit te voeren bestand te vinden.
e Environment-argumenten worden aan het child process doorgegeven.

POSIX-spawnfuncties[bewerken]

De POSIX-spawnfuncties werden geïntroduceerd om processen te kunnen ondersteunen bij POSIX-implementaties in embedded omgevingen die geen swapping of vertaling van dynamische adressen ondersteunden.[3]

Zie ook[bewerken]

Gerelateerde functies zijn:

  • fork: het afsplitsen van een nieuwe taak, als kopie van de oorspronkelijke taak
  • exec: het starten van een nieuwe taak in een eigen nieuwe context

In al deze gevallen is er sprake van parallelle uitvoering van functies.

Noten[bewerken]