*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> dup2 (2)              
Title
Content
Arch
Section
 

DUP(2)

Contents


NAME    [Toc]    [Back]

     dup, dup2 - duplicate an existing file descriptor

SYNOPSIS    [Toc]    [Back]

     #include <unistd.h>

     int
     dup(int oldd);

     int
     dup2(int oldd, int newd);

DESCRIPTION    [Toc]    [Back]

     dup() duplicates an existing object descriptor  and  returns
its value to
     the  calling  process (newd = dup(oldd)).  The argument oldd
is a small
     non-negative integer index  in  the  per-process  descriptor
table.  The value
  must  be  less  than the size of the table, which is returned by
     getdtablesize(3).  The new descriptor returned by  the  call
is the lowest
     numbered descriptor currently not in use by the process.

     The object referenced by the descriptor does not distinguish
between oldd
     and newd in any way.  Thus if newd and  oldd  are  duplicate
references to
     an  open file, read(2), write(2) and lseek(2) calls all move
a single
     pointer into the file, and append mode, non-blocking I/O and
asynchronous
     I/O  options  are shared between the references.  If a separate pointer into
 the file is desired, a different object reference to  the
file must be
     obtained  by issuing an additional open(2) call.  The closeon-exec flag
     on the new file descriptor is unset.

     In dup2(), the value of the new descriptor  newd  is  specified.  If this
     descriptor  is already in use, it is first deallocated as if
a close(2)
     call had been done first.  When  newd  equals  oldd,  dup2()
just returns
     without affecting the close-on-exec flag.

RETURN VALUES    [Toc]    [Back]

     The  value -1 is returned if an error occurs in either call.
The external
     variable errno indicates the cause of the error.

ERRORS    [Toc]    [Back]

     dup() and dup2() fail if:

     [EBADF]       oldd or newd is not a valid active descriptor.

     [EMFILE]      Too many descriptors are active.

SEE ALSO    [Toc]    [Back]

      
      
     accept(2), close(2), fcntl(2), open(2), pipe(2), socket(2),
     socketpair(2), getdtablesize(3)

STANDARDS    [Toc]    [Back]

     dup()  and  dup2()  are  expected  to  conform  to  IEEE Std
1003.1-1988
     (``POSIX'').

OpenBSD      3.6                           June      4,      1993
[ Back ]
 Similar pages
Name OS Title
dup Linux duplicate a file descriptor
dup HP-UX duplicate an open file descriptor
dup2 IRIX duplicate an open file descriptor
dup IRIX duplicate an open file descriptor
dup2 HP-UX duplicate an open file descriptor to a specific slot
gss_duplicate_name HP-UX allow an application to create an exact duplicate of the existing internal name
pxfisatty IRIX Determines if file descriptor corresponds to a valid file descriptor
uniq Linux remove duplicate lines from a sorted file
cpio HP-UX copy file archives in and out; duplicate directory trees
link Tru64 Create a hard link to an existing file on the local file system
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service