[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    dup(2) manual page Table of Contents

Name

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)


Table of Contents