spawn()
QNX SDP8.0System ArchitectureDeveloperUser
The QNX OS spawn() function is similar to posix_spawn().
The spawn() function gives you control over the following:
- file descriptors
- process group ID
- signal mask
- ignored signals
- scheduling policy
- scheduling parameters (priority)
- maximum stack size
- runmask (for SMP systems)
The basic forms of the spawn() function are:
- spawn()
- Spawn with the explicitly specified path.
- spawnp()
- Search the current PATH and invoke spawn() with the first matching executable.
There's also a set of convenience functions that are built on top of spawn() and spawnp() as follows:
- spawnl()
- Spawn with the command line provided as inline arguments.
- spawnle()
- spawnl() with explicitly passed environment variables.
- spawnlp()
- spawnp() that follows the command search path.
- spawnlpe()
- spawnlp() with explicitly passed environment variables.
- spawnv()
- Spawn with the command line pointed to by an array of pointers.
- spawnve()
- spawnv() with explicitly passed environment variables.
- spawnvp()
- spawnv() that follows the command search path.
- spawnvpe()
- spawnvp() with explicitly passed environment variables.
When a process is spawn()'ed, the child process inherits the following attributes of its parent:
- process group ID (unless SPAWN_SETGROUP is set in inherit.flags)
- session membership
- real user ID and real group ID
- supplementary group IDs
- priority and scheduling policy
- current working directory and root directory
- file creation mask
- signal mask (unless SPAWN_SETSIGMASK is set in inherit.flags)
- signal actions specified as SIG_DFL
- signal actions specified as SIG_IGN (except the ones modified by inherit.sigdefault when SPAWN_SETSIGDEF is set in inherit.flags)
The child process has several differences from the parent process:
- Signals set to be caught by the parent process are set to the default action (SIG_DFL).
- The child process's tms_utime, tms_stime, tms_cutime, and tms_cstime are tracked separately from the parent's.
- The number of seconds left until a SIGALRM signal would be generated is set to zero for the child process.
- The set of pending signals for the child process is empty.
- File locks set by the parent aren't inherited.
- Per-process timers created by the parent aren't inherited.
- Memory locks and mappings set by the parent aren't inherited.
The child process can access the parent process's environment by using the environ global variable (found in <unistd.h>).
For more information, see the spawn() function in the C Library Reference.
Page updated: