xref: /dflybsd-src/lib/libc/gen/dup3.3 (revision 46241f7ba8a407409af44a2da8d3f418a7078f68)
1a0db5952SSascha Wildner.\" Copyright (c) 2013 Jilles Tjoelker
2a0db5952SSascha Wildner.\" All rights reserved.
3a0db5952SSascha Wildner.\"
4a0db5952SSascha Wildner.\" Redistribution and use in source and binary forms, with or without
5a0db5952SSascha Wildner.\" modification, are permitted provided that the following conditions
6a0db5952SSascha Wildner.\" are met:
7a0db5952SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
8a0db5952SSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
9a0db5952SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
10a0db5952SSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
11a0db5952SSascha Wildner.\"    documentation and/or other materials provided with the distribution.
12a0db5952SSascha Wildner.\"
13a0db5952SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14a0db5952SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15a0db5952SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16a0db5952SSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17a0db5952SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18a0db5952SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19a0db5952SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20a0db5952SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21a0db5952SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22a0db5952SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23a0db5952SSascha Wildner.\" SUCH DAMAGE.
24a0db5952SSascha Wildner.\"
25a0db5952SSascha Wildner.\" $FreeBSD: head/lib/libc/gen/dup3.3 254488 2013-08-18 13:25:18Z jilles $
26a0db5952SSascha Wildner.\"
27a0db5952SSascha Wildner.Dd August 16, 2013
28a0db5952SSascha Wildner.Dt DUP3 3
29a0db5952SSascha Wildner.Os
30a0db5952SSascha Wildner.Sh NAME
31a0db5952SSascha Wildner.Nm dup3
32a0db5952SSascha Wildner.Nd duplicate an existing file descriptor
33a0db5952SSascha Wildner.Sh LIBRARY
34a0db5952SSascha Wildner.Lb libc
35a0db5952SSascha Wildner.Sh SYNOPSIS
36a0db5952SSascha Wildner.In fcntl.h
37a0db5952SSascha Wildner.In unistd.h
38a0db5952SSascha Wildner.Ft int
39a0db5952SSascha Wildner.Fn dup3 "int oldd" "int newd" "int flags"
40a0db5952SSascha Wildner.Sh DESCRIPTION
41a0db5952SSascha WildnerThe
42a0db5952SSascha Wildner.Fn dup3
43a0db5952SSascha Wildnerfunction
44a0db5952SSascha Wildnerduplicates an existing object descriptor
45a0db5952SSascha Wildnerwhile allowing the value of the new descriptor to be specified.
46a0db5952SSascha Wildner.Pp
47a0db5952SSascha WildnerThe close-on-exec flag on the new file descriptor is determined by the
48a0db5952SSascha Wildner.Dv O_CLOEXEC
49a0db5952SSascha Wildnerbit in
50a0db5952SSascha Wildner.Fa flags .
51a0db5952SSascha Wildner.Pp
52a0db5952SSascha WildnerIf
53a0db5952SSascha Wildner.Fa oldd
54a0db5952SSascha Wildner\*(Ne
55a0db5952SSascha Wildner.Fa newd
56a0db5952SSascha Wildnerand
57a0db5952SSascha Wildner.Fa flags
58a0db5952SSascha Wildner== 0,
59a0db5952SSascha Wildnerthe behavior is identical to
60a0db5952SSascha Wildner.Li dup2(oldd, newd) .
61a0db5952SSascha Wildner.Pp
62a0db5952SSascha WildnerIf
63a0db5952SSascha Wildner.Fa oldd
64a0db5952SSascha Wildner==
65a0db5952SSascha Wildner.Fa newd ,
66a0db5952SSascha Wildnerthen
67a0db5952SSascha Wildner.Fn dup3
68a0db5952SSascha Wildnerfails, unlike
69a0db5952SSascha Wildner.Xr dup2 2 .
70a0db5952SSascha Wildner.Sh RETURN VALUES
71a0db5952SSascha WildnerThe value -1 is returned if an error occurs.
72a0db5952SSascha WildnerThe external variable
73a0db5952SSascha Wildner.Va errno
74a0db5952SSascha Wildnerindicates the cause of the error.
75a0db5952SSascha Wildner.Sh ERRORS
76a0db5952SSascha WildnerThe
77a0db5952SSascha Wildner.Fn dup3
78a0db5952SSascha Wildnerfunction fails if:
79a0db5952SSascha Wildner.Bl -tag -width Er
80a0db5952SSascha Wildner.It Bq Er EBADF
81a0db5952SSascha WildnerThe
82a0db5952SSascha Wildner.Fa oldd
83a0db5952SSascha Wildnerargument is not a valid active descriptor or the
84a0db5952SSascha Wildner.Fa newd
85a0db5952SSascha Wildnerargument is negative or exceeds the maximum allowable descriptor number
86a0db5952SSascha Wildner.It Bq Er EINVAL
87a0db5952SSascha WildnerThe
88a0db5952SSascha Wildner.Fa oldd
89a0db5952SSascha Wildnerargument is equal to the
90a0db5952SSascha Wildner.Fa newd
91a0db5952SSascha Wildnerargument.
92a0db5952SSascha Wildner.It Bq Er EINVAL
93a0db5952SSascha WildnerThe
94a0db5952SSascha Wildner.Fa flags
95a0db5952SSascha Wildnerargument has bits set other than
96a0db5952SSascha Wildner.Dv O_CLOEXEC .
97a0db5952SSascha Wildner.El
98a0db5952SSascha Wildner.Sh SEE ALSO
99a0db5952SSascha Wildner.Xr accept 2 ,
100a0db5952SSascha Wildner.Xr close 2 ,
101a0db5952SSascha Wildner.Xr dup2 2 ,
102a0db5952SSascha Wildner.Xr fcntl 2 ,
103a0db5952SSascha Wildner.Xr getdtablesize 2 ,
104a0db5952SSascha Wildner.Xr open 2 ,
105a0db5952SSascha Wildner.Xr pipe 2 ,
106a0db5952SSascha Wildner.Xr socket 2 ,
107a0db5952SSascha Wildner.Xr socketpair 2
108a0db5952SSascha Wildner.Sh STANDARDS
109a0db5952SSascha WildnerThe
110a0db5952SSascha Wildner.Fn dup3
111a0db5952SSascha Wildnerfunction does not conform to any standard.
112a0db5952SSascha Wildner.Sh HISTORY
113a0db5952SSascha WildnerThe
114a0db5952SSascha Wildner.Fn dup3
115a0db5952SSascha Wildnerfunction appeared in
116*46241f7bSSascha Wildner.Fx 10.0
117*46241f7bSSascha Wildnerand
118*46241f7bSSascha Wildner.Dx 5.5 .
119