Minix Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
DUP(2)                        System Calls Manual                       DUP(2)

NAME
       dup, dup2 - duplicate a descriptor

SYNOPSIS
       #include <unistd.h>

       int dup(int oldd)
       int dup2(int oldd, int newd)

DESCRIPTION
       Dup  duplicates  an  existing descriptor.  The argument oldd is a small
       non-negative integer index in the per-process  descriptor  table.   The
       value  must  be  less  than  OPEN_MAX,  the size of the table.  The new
       descriptor returned by the call, let's name  it  newd,  is  the  lowest
       numbered descriptor that is not currently in use by the process.

       The  object  referenced  by the descriptor does not distinguish between
       references using 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  close-on-exec  flag  on  the  new  file
       descriptor is unset.

       In the second form of the call, the value of newd desired is specified.
       If  this  descriptor  is  already  in  use,  the  descriptor  is  first
       deallocated  as  if  a  close(2) call had been done first.  Newd is not
       closed if it equals oldd.

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

ERRORS
       Dup and dup2 fail if:

       [EBADF]        Oldd or newd is not a valid active descriptor

       [EMFILE]       Too many descriptors are active.

NOTES
       Dup  and  dup2  are  now  implemented  using  the  F_DUPFD  function of
       fcntl(2), although the  old  system  call  interfaces  still  exist  to
       support old programs.

SEE ALSO
       open(2), close(2), fcntl(2), pipe(2).

4th Berkeley Distribution        May 13, 1986                           DUP(2)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | NOTES | SEE ALSO