Open System Services System Calls Reference Manual (G06.29+, H06.08+, J06.03+)
System Functions (a - d) dup2(2)
• Returns the same file status flags (that is, both file descriptors share the same file status
flags).
• Clears the close-on-exec flag (FD_CLOEXEC bit) associated with the new file descrip-
tor so that the file remains open across calls to any function in the exec, tdm_exec, and
tdm_spawn sets of functions.
NOTES
The dup2( ) function provides an alternative interface to the service provided by the fcntl( ) func-
tion by using the F_DUPFD value of the request parameter. The call:
fid = dup2( file1, file2 );
is equivalent to:
close( file2 );
fid = fcntl( file1, F_DUPFD, file2 );
To use the dup2() functionality in a threaded application that uses the Standard POSIX Threads
library, see spt_dup2x(2).
To use this function in a threaded application that uses the POSIX User Thread Model library on
systems running H06.21 or later RVUs or J06.10 or later RVUs, you must perform all of the fol-
lowing tasks to make the function thread-aware in a multi-threaded application:
• Compile the application using the _PUT_MODEL_ feature test macro or equivalent
compiler command option.
• Link the application to the zputdll library (/G/system/zdllnnn/zputdll).
On systems running H06.24 or later H-series RVUs or J06.13 or later J-series RVUs, you can use
this function with 32-bit or 64-bit OSS applications.
To use this function in a 32-bit threaded application on systems running H06.24 or later RVUs or
J06.13 or later RVUs, perform the same tasks (described above) used to make the function
thread-aware in a multi-threaded application on systems running H06.21/J06.10 or later RVUs.
To use this function in a 64-bit threaded application on systems running H06.24 or later RVUs or
J06.13 or later RVUs, you must perform all of the following tasks to make the function thread-
aware in a multi-threaded application:
• Compile the application using the _PUT_MODEL_ feature test macro or equivalent
compiler command option.
• Compile the application using the -Wlp64 compiler command option.
• Link the application to the yputdll library (/G/system/zdllnnn/yputdll).
For detailed information about writing multi-threaded and 64-bit applications for the Open Sys-
tem Services environment, see the Open System Services Programmer’s Guide.
RETURN VALUES
Upon successful completion, the dup2() function returns a new file descriptor. Otherwise, the
value -1 is returned, and errno is set to indicate the error.
ERRORS
If any of these conditions occurs, the dup2() function sets errno to the corresponding value:
[EBADF] One of these conditions exists:
527186-023 Hewlett-Packard Company 1−61