Annotation of 43BSDReno/lib/libc/sys/dup.2, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)dup.2       6.3 (Berkeley) 5/13/86
                      6: .\"
                      7: .TH DUP 2 "May 13, 1986"
                      8: .UC 4
                      9: .SH NAME
                     10: dup, dup2 \- duplicate a descriptor
                     11: .SH SYNOPSIS
                     12: .nf
                     13: .ft B
                     14: newd = dup(oldd)
                     15: int newd, oldd;
                     16: .PP
                     17: .ft B
                     18: dup2(oldd, newd)
                     19: int oldd, newd;
                     20: .fi
                     21: .SH DESCRIPTION
                     22: .I Dup
                     23: duplicates an existing object descriptor.
                     24: The argument \fIoldd\fP is a small non-negative integer index in
                     25: the per-process descriptor table.  The value must be less
                     26: than the size of the table, which is returned by
                     27: .IR getdtablesize (2).
                     28: The new descriptor returned by the call,
                     29: .I newd,
                     30: is the lowest numbered descriptor that is
                     31: not currently in use by the process.
                     32: .PP
                     33: The object referenced by the descriptor does not distinguish
                     34: between references using \fIoldd\fP and \fInewd\fP in any way.
                     35: Thus if \fInewd\fP and \fIoldd\fP are duplicate references to an open
                     36: file,
                     37: .IR read (2),
                     38: .IR write (2)
                     39: and
                     40: .IR lseek (2)
                     41: calls all move a single pointer into the file,
                     42: and append mode, non-blocking I/O and asynchronous I/O options
                     43: are shared between the references.
                     44: If a separate pointer into the file is desired, a different
                     45: object reference to the file must be obtained by issuing an
                     46: additional
                     47: .IR open (2)
                     48: call.
                     49: The close-on-exec flag on the new file descriptor is unset.
                     50: .PP
                     51: In the second form of the call, the value of
                     52: .IR newd
                     53: desired is specified.  If this descriptor is already
                     54: in use, the descriptor is first deallocated as if a
                     55: .IR close (2)
                     56: call had been done first.
                     57: .SH "RETURN VALUE
                     58: The value \-1 is returned if an error occurs in either call.
                     59: The external variable
                     60: .I errno
                     61: indicates the cause of the error.
                     62: .SH "ERRORS
                     63: .I Dup
                     64: and
                     65: .I dup2
                     66: fail if:
                     67: .TP 15
                     68: [EBADF]
                     69: \fIOldd\fP or
                     70: \fInewd\fP is not a valid active descriptor
                     71: .TP 15
                     72: [EMFILE]
                     73: Too many descriptors are active.
                     74: .SH "SEE ALSO"
                     75: accept(2),
                     76: open(2),
                     77: close(2),
                     78: fcntl(2),
                     79: pipe(2),
                     80: socket(2),
                     81: socketpair(2),
                     82: getdtablesize(2)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.