DUP(2) System Calls DUP(2)

NAME


dup - duplicate an open file descriptor

SYNOPSIS


#include <unistd.h>

int dup(int fildes);


DESCRIPTION


The dup() function returns a new file descriptor having the following in
common with the original open file descriptor fildes:

o same open file (or pipe)

o same file pointer (that is, both file descriptors share one
file pointer)

o 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) function call is equivalent to:


fcntl(fildes, F_DUPFD, 0)

RETURN VALUES


Upon successful completion, a non-negative integer representing the file
descriptor is returned. Otherwise, -1 is returned and errno is set to
indicate the error.

ERRORS


The dup() function will fail if:

EBADF
The fildes argument is not a valid open file descriptor.


EINTR
A signal was caught during the execution of the dup()
function.


EMFILE
The process has too many open files (see getrlimit(2)).


ENOLINK
The fildes argument is on a remote machine and the link to
that machine is no longer active.


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Interface Stability | Standard |
+--------------------+-------------------+
|MT-Level | Async-Signal-Safe |
+--------------------+-------------------+

SEE ALSO


close(2), creat(2), exec(2), fcntl(2), getrlimit(2), open(2), pipe(2),
dup2(3C), lockf(3C), attributes(7), standards(7)

December 28, 1996 DUP(2)