spawnveg3
Process spawn with process group and session control
Usage
$1$2#include <ast.h>#include <ast.h>#include <ast.h>#include <ast.h>#include <ast.h>#include <ast.h>#include <ast.h>#include <ast.h>
$1$2int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);int spawnveg(const char* command, char** argv, char** envv, pid_t pgid);
Overview
$1$2spwanvegspwanvegspwanvegspwanvegspwanvegspwanvegspwanvegspwanveg combines fork(2), exec(2), setpgid(2) and setsid(2) into a single call.
$1$2commandcommandcommandcommandcommandcommandcommandcommand $1$2argvargvargvargvargvargvargvargv and $1$2envvenvvenvvenvvenvvenvvenvvenvv are as in execve(2). $1$2pgidpgidpgidpgidpgidpgidpgidpgid controls the new process group and session:
$1$2<0<0<0<0<0<0<0<0
|
The new process becomes a session leader. is called in the child context. |
|---|---|
$1$200000000
|
The new process is in the callers process group. |
$1$211111111
|
The new process becomes a process group leader. |
$1$2>1>1>1>1>1>1>1>1
|
The new process joins the process group pgid. |
Comments
It is possible to code all process creation (except for vfork(2) hack like in csh(1)) using $1$2spawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnveg The proc(3) routines and ksh(1) do this on systems that don't support fork(2). This makes porting to NT and Windows a snap: a simple iffe(1) probe provides a $1$2spawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnveg implementation using the NT or Windows process primitives.
Releases
Unchanged in 135 releases since Mac OS X 10.4.