|  | .TH DUP 3 | 
|  | .SH NAME | 
|  | dup \- duplicate an open file descriptor | 
|  | .SH SYNOPSIS | 
|  | .B #include <u.h> | 
|  | .br | 
|  | .B #include <libc.h> | 
|  | .PP | 
|  | .B | 
|  | int dup(int oldfd, int newfd) | 
|  | .SH DESCRIPTION | 
|  | Given a file descriptor, | 
|  | .IR oldfd , | 
|  | referring to an open file, | 
|  | .I dup | 
|  | returns a new file descriptor referring to the same file. | 
|  | .PP | 
|  | If | 
|  | .I newfd | 
|  | is \-1 the system chooses the lowest available file descriptor. | 
|  | Otherwise, | 
|  | .I dup | 
|  | will use | 
|  | .I newfd | 
|  | for the new file descriptor | 
|  | (closing any old file associated with | 
|  | .IR newfd ). | 
|  | .SH SOURCE | 
|  | .B \*9/src/lib9/dup.c | 
|  | .SH DIAGNOSTICS | 
|  | Sets | 
|  | .IR errstr . | 
|  | .SH BUGS | 
|  | To avoid name conflicts with the underlying system, | 
|  | .I dup | 
|  | is a preprocessor macro defined as | 
|  | .IR p9dup ; | 
|  | see | 
|  | .IR intro (3). |