spawn.h(7POSIX)
π spawn.h β the header that literally spawns whole new processes, bestie π
okay so before we even get into it β hi, this is the POSIX Programmer's Manual page for spawn.h, and I need you to know that the Linux implementation of this interface may differ from what's written here (so like, go check the corresponding Linux manual page for the deets on Linux behavior), or honestly the interface might just not be implemented on Linux at all. π vibe check accordingly.
β¨ NAME β¨
spawn.h β spawn (ADVANCED REALTIME) π¦
πΈ SYNOPSIS πΈ
#include <spawn.h>
π DESCRIPTION π
So the <spawn.h> header is gonna define the posix_spawnattr_t and posix_spawn_file_actions_t types β those are the ones you use when you're doing spawn operations. iconic behavior fr.
It shall also define the mode_t and pid_t types, exactly as described over in <sys/types.h>. π
And it defines the sigset_t type as described in <signal.h>. π
The tag sched_param shall be declared as naming an incomplete structure type β like, a mystery box β and the contents of that structure are described in the <sched.h> header. not me leaving it undefined on purpose π
Then the header defines these symbolic constants for you to use as flags that may be set in a posix_spawnattr_t object using the posix_spawnattr_setflags() function:
POSIX_SPAWN_RESETIDSPOSIX_SPAWN_SETPGROUPPOSIX_SPAWN_SETSCHEDPARAMPOSIX_SPAWN_SETSCHEDULERPOSIX_SPAWN_SETSIGDEFPOSIX_SPAWN_SETSIGMASK
And the following shall be declared as functions, and may also be defined as macros (yes, both, it's giving flexible). Function prototypes shall be provided, and here they are, verbatim, no notes:
int posix_spawn(pid_t *restrict, const char *restrict,
const posix_spawn_file_actions_t *,
const posix_spawnattr_t *restrict, char *const [restrict],
char *const [restrict]);
int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *,
int);
int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *,
int, int);
int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *restrict,
int, const char *restrict, int, mode_t);
int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);
int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
int posix_spawnattr_destroy(posix_spawnattr_t *);
int posix_spawnattr_getflags(const posix_spawnattr_t *restrict,
short *restrict);
int posix_spawnattr_getpgroup(const posix_spawnattr_t *restrict,
pid_t *restrict);
int posix_spawnattr_getschedparam(const posix_spawnattr_t *restrict,
struct sched_param *restrict);
int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *restrict,
int *restrict);
int posix_spawnattr_getsigdefault(const posix_spawnattr_t *restrict,
sigset_t *restrict);
int posix_spawnattr_getsigmask(const posix_spawnattr_t *restrict,
sigset_t *restrict);
int posix_spawnattr_init(posix_spawnattr_t *);
int posix_spawnattr_setflags(posix_spawnattr_t *, short);
int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t);
int posix_spawnattr_setschedparam(posix_spawnattr_t *restrict,
const struct sched_param *restrict);
int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
int posix_spawnattr_setsigdefault(posix_spawnattr_t *restrict,
const sigset_t *restrict);
int posix_spawnattr_setsigmask(posix_spawnattr_t *restrict,
const sigset_t *restrict);
int posix_spawnp(pid_t *restrict, const char *restrict,
const posix_spawn_file_actions_t *,
const posix_spawnattr_t *restrict,
char *const [restrict], char *const [restrict]);
heads up bestie π β including the<spawn.h>header may make visible symbols that are defined in the<sched.h>and<signal.h>headers. so like, surprise guests. π«Ά
Oh and btw, the following sections are informative. not normative. just vibes.
π APPLICATION USAGE π
None. literally nothing. the void. π
π§ RATIONALE π§
None. also nothing. we love a low-effort section, slay. β¨
π₯ FUTURE DIRECTIONS π₯
None. future? unknown. the future is a mystery and so is this section. π
π SEE ALSO π
<sched.h><semaphore.h><signal.h><sys_types.h>
And from the System Interfaces volume of POSIX.1β2017, go read up on:
posix_spawn()posix_spawn_file_actions_addclose()posix_spawn_file_actions_adddup2()posix_spawn_file_actions_destroy()posix_spawnattr_destroy()posix_spawnattr_getflags()posix_spawnattr_getpgroup()posix_spawnattr_getschedparam()posix_spawnattr_getschedpolicy()posix_spawnattr_getsigdefault()posix_spawnattr_getsigmask()
π COPYRIGHT π
okay legal moment, stay with me, this part matters and I'm not changing a single word of the meaning:
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .
Any typographical or formatting errors that appear in this page are most likely to have been introduced during the conversion of the source files to man page format. To report such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .
and that's the whole page, bestie π this lil masterpiece was brought to you by IEEE/The Open Group, 2017 β yes, the spawn.h(7POSIX) era, and honestly? iconic. periodt. π
β¨
π¦ where this page comes from
- debian bookworm: manpages-posix-dev 2017a-2 Β· Other
- debian trixie: manpages-posix-dev 2017a-2 Β· Other
- ubuntu jammy: manpages-posix-dev 2017a-2 Β· Other
- ubuntu noble: manpages-posix-dev 2017a-2 Β· Other
- ubuntu resolute: manpages-posix-dev 2017a-2build1 Β· Other
- ubuntu stonking: manpages-posix-dev 2017a-2.1 Β· Other
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms