POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE(3) Library Functions Manual POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE(3)

posix_spawn_file_actions_addclose posix_spawn_file_actions_addopenadd open or close actions to a

#include <spawn.h>

int
posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *file_actions, int filedes);

int
posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *restrict file_actions, int filedes, const char *restrict path, int oflag, mode_t mode);

int
posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *file_actions, int filedes, int newfiledes);

int
posix_spawn_file_actions_addinherit_np(posix_spawn_file_actions_t *file_actions, int filedes);

int
posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *file_actions, const char *restrict path);

int
posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *file_actions, int filedes);

The () function adds a close operation to the list of operations associated with the object referenced by file_actions, for subsequent use in a call to posix_spawn(2) or posix_spawnp(2). The descriptor referred to by filedes is closed as if () had been called on it prior to the new child process starting execution.

The () function adds an open operation to the list of operations associated with the object referenced by file_actions, for subsequent use in a call to posix_spawn(2) or posix_spawnp(2). The descriptor referred to by filedes is opened using the path, , and arguments as if () had been called on it prior to the new child process starting execution. The string path is copied by the posix_spawn_file_actions_addopen() function during this process, so storage need not be persistent in the caller.

The () function adds a dup2 operation to the list of operations associated with the object referenced by file_actions, for subsequent use in a call to posix_spawn(2) or posix_spawnp(2). The descriptor referred to by is created as if () had been called on filedes prior to the new child process starting execution.

The () function adds an abstract inheritance operation to the list of operations associated with the object referenced by file_actions, for subsequent use in a call to posix_spawn(2) or posix_spawnp(2). The pre-existing descriptor referred to by filedes is marked for inheritance into the new process image, and the flag is cleared from the file descriptor in the new process image.

Normally, for posix_spawn(2) and posix_spawnp(2), all file descriptors are inherited from the parent process into the spawned process, except for those explicitly marked as close-on-exec. However if the flag POSIX_SPAWN_CLOEXEC_DEFAULT is set, then during the spawn operation, all pre-existing file descriptors in the parent process are treated as if they had been marked close-on-exec i.e. none of them are automatically inherited. See posix_spawnattr_setflags(3). Only file descriptors explicitly manipulated via file_actions are made available in the spawned process. In that case, () can be used to make specific pre-existing file descriptors from the parent process be available in the spawned process.

The () function adds an chdir operation to the list of operations associated with the object referenced by file_actions, for subsequent use in a call to posix_spawn(2) or posix_spawnp(2). The current working directory will be set as if () had been called with path prior to the new child process starting execution.

The () function adds a fchdir operation to the list of operations associated with the object referenced by file_actions, for subsequent use in a call to posix_spawn(2) or posix_spawnp(2). The current working directory will be set as if () had been called with filedes prior to the new child process starting execution. When POSIX_SPAWN_CLOEXEC_DEFAULT is set, the file descriptor filedes will not be automatically inherited unless an explicit posix_spawn_file_actions_addinherit_np() action for filedes has been added.

On success, these functions return 0; on failure they return an error number from <errno.h>.

These functions may fail if:

[]
The value specified by filedes is negative or would cause the process to exceed the maximum number of open files it is allowed.
[]
The value of file_actions is invalid.
[]
The length of the value specified by path exceeds PATH_MAX.
[]
Insufficient memory was available to add the new action to file_actions.

posix_spawn(2), posix_spawnp(2), posix_spawn_file_actions_init(3), posix_spawn_file_actions_destroy(3), posix_spawnattr_setflags(3).

Version 3 of the Single UNIX Specification (“SUSv3”) [SPN]

The posix_spawn_file_actions_init() and posix_spawn_file_actions_destroy() function calls appeared in Version 3 of the Single UNIX Specification (“SUSv3”) [SPN].

November 2, 2010 Mac OS X