Spawn (informatica)
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
bewerkenDe 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
bewerkenDe 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
bewerkenGerelateerde 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- ↑ Posix.1-2008 spawn.h
- ↑ POSIX-emulatieomgevingen zoals Cygwin of SFU wel.
- ↑ Posix.1-2008 posix_spawn function
- Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel Spawn (computing) op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.