dup - duplicate an open file descriptor

SYNOPSIS

#include <unistd.h>

int dup(int fildes);

MT-LEVEL

Async-Signal-Safe

DESCRIPTION

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 )

RETURN VALUES

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.

ERRORS

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.

SEE ALSO

close(2) creat(2) exec(2) fcntl(2) getrlimit(2) open(2) pipe(2) dup2(3c) lockf(3c)