NAME
spawnveg - process spawn with process group and session control
SYNOPSIS
$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);
DESCRIPTION
$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.
SEE ALSO
fork(2), exec(2), setpgid(2), setsid(2), spawnve(2)