---
name: "spawnveg"
section: "3"
platform: "macos"
package: "ksh"
version: "42"
release: "macOS 26.5"
platforms: ["macos"]
url: "https://new.carta.tech/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)](/fork/2.md), *exec*(2), [*setpgid*(2)](/setpgid/2.md) and [*setsid*(2)](/setsid/2.md) into a single call.

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

## SEE ALSO

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