posix_spawn
, posix_spawnp
—spawn a process ¶Synopsis
#include <spawn.h> int posix_spawn(pid_t *pid, const char *path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]); int posix_spawnp(pid_t *pid, const char *file, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]);
Description
Use posix_spawn
and posix_spawnp
to create a new child process
from the specified process image file. argc
is the argument count
and argv
is an array of argument strings passed to the new program.
envp
is an array of stings, which are passed as environment to the
new program.
The path
argument to posix_spawn
identifies the new process
image file to execute. The file
argument to posix_spawnp
is
used to construct a pathname that identifies the new process image
file by duplicating the actions of the shell in searching for an
executable file if the specified filename does not contain a ‘/
’
character. The file
is sought in the colon-separated list of
directory pathnames specified in the PATH
environment variable.
The file descriptors remain open across posix_spawn
and
posix_spawnp
except for those marked as close-on-exec. The open
file descriptors in the child process can be modified by the spawn file
actions object pointed to by file_actions
.
The spawn attributes object type pointed to by attrp
argument
may contain any of the attributes defined in spawn.h
.
Returns
posix_spawn
and posix_spawnp
return the process ID of the newly
spawned child process in the variable pointed by a non-NULL *pid
argument and zero as the function return value upon successful
completion. Otherwise, posix_spawn
and posix_spawnp
return an
error number as the function return value to indicate the error; the
value stored into the variable pointed to by a non-NULL *pid
argument is unspecified.
Portability
POSIX.1-2008 requires posix_spawn
and posix_spawnp
.
Supporting OS subroutines required: _close
, dup2
, _fcntl
,
_execve
, execvpe
, _exit
, _open
, sigaction
,
sigprocmask
, waitpid
, sched_setscheduler
,
sched_setparam
, setegid
, seteuid
, setpgid
, vfork
.