---
name: "spawnveg"
section: "3"
platform: "macos"
package: "ksh"
version: "42"
release: "macOS 26.5"
platforms: ["macos"]
url: "https://carta.tech/man/spawnveg"
---

# spawnveg(3)

process spawn with process group and session control

## 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)](/man/fork/2.md), *exec*(2), [*setpgid*(2)](/man/setpgid/2.md) and [*setsid*(2)](/man/setsid/2.md) into a single call.

$1$2commandcommandcommandcommandcommandcommandcommandcommand $1$2argvargvargvargvargvargvargvargv and $1$2envvenvvenvvenvvenvvenvvenvvenvv are as in [*execve*(2)](/man/execve/2.md). $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)](/man/vfork/2.md) hack like in [*csh*(1)](/man/csh/1.md)) using $1$2spawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnveg The [*proc*(3)](/man/proc/3.md) routines and [*ksh*(1)](/man/ksh/1.md) do this on systems that don't support [*fork*(2)](/man/fork/2.md). This makes porting to NT and Windows a snap: a simple [*iffe*(1)](/man/iffe/1.md) probe provides a  $1$2spawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnvegspawnveg implementation using the NT or Windows process primitives.

## SEE ALSO

[fork(2)](/man/fork/2.md), exec(2), [setpgid(2)](/man/setpgid/2.md), [setsid(2)](/man/setsid/2.md), spawnve(2)
