# posix_spawn_file_actions_adddup2

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           posix_spawn_file_actions_adddup2 — add dup2 action to spawn file
           actions object (**ADVANCED REALTIME**)
    


## SYNOPSIS



           #include <spawn.h>
    
           int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t
               *_file_actions_ , int _fildes_ , int _newfildes_);
    


## DESCRIPTION



           The _posix_spawn_file_actions_adddup2_() function shall add a _dup2_()
           action to the object referenced by _file_actions_ that shall cause
           the file descriptor _fildes_ to be duplicated as _newfildes_ (as if
           _dup2_(_fildes_ , _newfildes_) had been called) when a new process is
           spawned using this file actions object.
    
           A spawn file actions object is as defined in
           posix_spawn_file_actions_addclose(3p).
    


## RETURN VALUE



           Upon successful completion, the _posix_spawn_file_actions_adddup2_()
           function shall return zero; otherwise, an error number shall be
           returned to indicate the error.
    


## ERRORS



           The _posix_spawn_file_actions_adddup2_() function shall fail if:
    
           **EBADF** The value specified by _fildes_ or _newfildes_ is negative or
                  greater than or equal to {OPEN_MAX}.
    
           **ENOMEM** Insufficient memory exists to add to the spawn file actions
                  object.
    
           The _posix_spawn_file_actions_adddup2_() function may fail if:
    
           **EINVAL** The value specified by _file_actions_ is invalid.
    
           It shall not be considered an error for the _fildes_ argument passed
           to the _posix_spawn_file_actions_adddup2_() function to specify a
           file descriptor for which the specified operation could not be
           performed at the time of the call. Any such error will be detected
           when the associated file actions object is later used during a
           _posix_spawn_() or _posix_spawnp_() operation.
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           The _posix_spawn_file_actions_adddup2_() function is part of the
           Spawn option and need not be provided on all implementations.
    
           Implementations may use file descriptors that must be inherited
           into child processes for the child process to remain conforming,
           such as for message catalog or tracing purposes. Therefore, an
           application that calls _posix_spawn_file_actions_adddup2_() with an
           arbitrary integer for _newfildes_ risks non-conforming behavior, and
           this function can only portably be used to overwrite file
           descriptor values that the application has obtained through
           explicit actions, or for the three file descriptors corresponding
           to the standard file streams. In order to avoid a race condition
           of leaking an unintended file descriptor into a child process, an
           application should consider opening all file descriptors with the
           FD_CLOEXEC bit set unless the file descriptor is intended to be
           inherited across _exec_.
    


## RATIONALE



           Refer to the RATIONALE section in
           posix_spawn_file_actions_addclose(3p).
    


## FUTURE DIRECTIONS



           None.
    


* * *