87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 1980 Regents of the University of California.
 | |
| .\" All rights reserved.  The Berkeley software License Agreement
 | |
| .\" specifies the terms and conditions for redistribution.
 | |
| .\"
 | |
| .\"	@(#)dup.2	6.3 (Berkeley) 5/13/86
 | |
| .\"
 | |
| .TH DUP 2 "May 13, 1986"
 | |
| .UC 4
 | |
| .SH NAME
 | |
| dup, dup2 \- duplicate a descriptor
 | |
| .SH SYNOPSIS
 | |
| .nf
 | |
| .ft B
 | |
| #include <unistd.h>
 | |
| 
 | |
| int dup(int \fIoldd\fP)
 | |
| int dup2(int \fIoldd\fP, int \fInewd\fP)
 | |
| .SH DESCRIPTION
 | |
| .B Dup
 | |
| duplicates an existing descriptor.
 | |
| The argument \fIoldd\fP 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
 | |
| .I newd,
 | |
| is the lowest numbered descriptor that is
 | |
| not currently in use by the process.
 | |
| .PP
 | |
| The object referenced by the descriptor does not distinguish
 | |
| between references using \fIoldd\fP and \fInewd\fP in any way.
 | |
| Thus if \fInewd\fP and \fIoldd\fP are duplicate references to an open
 | |
| file,
 | |
| .BR read (2),
 | |
| .BR write (2)
 | |
| and
 | |
| .BR 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
 | |
| .BR open (2)
 | |
| call.
 | |
| The close-on-exec flag on the new file descriptor is unset.
 | |
| .PP
 | |
| In the second form of the call, the value of
 | |
| .IR newd
 | |
| desired is specified.  If this descriptor is already
 | |
| in use, the descriptor is first deallocated as if a
 | |
| .BR close (2)
 | |
| call had been done first.
 | |
| .I Newd
 | |
| is not closed if it equals
 | |
| .IR oldd .
 | |
| .SH "RETURN VALUE
 | |
| The value \-1 is returned if an error occurs in either call.
 | |
| The external variable
 | |
| .B errno
 | |
| indicates the cause of the error.
 | |
| .SH "ERRORS
 | |
| .B Dup
 | |
| and
 | |
| .B dup2
 | |
| fail if:
 | |
| .TP 15
 | |
| [EBADF]
 | |
| \fIOldd\fP or
 | |
| \fInewd\fP is not a valid active descriptor
 | |
| .TP 15
 | |
| [EMFILE]
 | |
| Too many descriptors are active.
 | |
| .SH NOTES
 | |
| .B Dup
 | |
| and
 | |
| .B dup2
 | |
| are now implemented using the
 | |
| .B F_DUPFD
 | |
| function of
 | |
| .BR fcntl (2),
 | |
| although the old system call interfaces still exist to support old programs.
 | |
| .SH "SEE ALSO"
 | |
| .BR open (2),
 | |
| .BR close (2),
 | |
| .BR fcntl (2),
 | |
| .BR pipe (2).
 |