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