Spawn (informatica)

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

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

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

Er is ook een andere familie van spawn functies in een optionele extensie op de POSIX standaard. [1]

DOS/Windows spawn functies[bewerken]

De DOS/Windows spawn functies zijn geïnspireerd op de Unix functies fork en exec. Omdat deze besturingssystemen geen fork ondersteunden werd spawn geïntoduceerd.[2] De spawn functie 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:

Name Notes
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 de te uit te voeren file te vinden.
e Environment argumenten worden aan het child process doorgegeven.

POSIX spawn functies[bewerken]

De POSIX spawn functies werden geïntroduceerd om processen te kunnen ondersteunen bij POSIX implementaties in embedded omgevingen die geen swapping of dynamische adres vertaling ondersteunden.[3]

Zie ook[bewerken]

Gerelateerd functies zijn:

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

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

Referenties[bewerken]

  1. Posix.1-2008 spawn.h
  2. POSIX emulatie omgevingen zoals Cygwin of SFU wel
  3. Posix.1-2008 posix_spawn function