dup(2) manual page
Table of Contents
dup - duplicate an open file descriptor
#include <unistd.h>
int dup(int fildes);
Async-Signal-Safe
dup() returns
a new file descriptor having the following in common with the original
open file descriptor fildes:
- Same open file (or pipe).
- Same file pointer
- (that is, both file descriptors share one file pointer).
- Same access mode
(read, write or read/write).
The new file descriptor is set to remain open
across exec functions (see fcntl(2)
).
The file descriptor returned is the
lowest one available.
The dup(fildes) is equivalent to
fcntl( fildes, F_DUPFD,
0 )
Upon successful completion a non-negative integer, namely
the file descriptor, is returned. Otherwise, a value of -1 is returned and
errno is set to indicate the error.
dup() will fail if one or more
of the following are true:
- EBADF
- fildes is not a valid open file descriptor.
- EINTR
- A signal was caught during the dup() function.
- EMFILE
- The process
has too many open files (see getrlimit(2)
).
- ENOLINK
- fildes is on a remote
machine and the link to that machine is no longer active.
close(2)
,
creat(2)
, exec(2)
, fcntl(2)
, getrlimit(2)
, open(2)
, pipe(2)
, dup2(3C)
,
lockf(3C)
Table of Contents