Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DUP3(3)			    Library Functions Manual		       DUP3(3)

NAME
       dup3 -- duplicate an existing file descriptor

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<fcntl.h>
       #include	<unistd.h>

       int
       dup3(int	oldd, int newd,	int flags);

DESCRIPTION
       The  dup3() function duplicates an existing object descriptor while al-
       lowing the value	of the new descriptor to be specified.

       The close-on-exec flag on the new file descriptor is determined by  the
       O_CLOEXEC bit in	flags.

       The  close-on-fork flag on the new file descriptor is determined	by the
       O_CLOFORK bit in	flags.

       If oldd != newd and flags == 0, the behavior is identical to dup2(oldd,
       newd).

       If oldd == newd,	then dup3() fails, unlike dup2(2).

RETURN VALUES
       The value -1 is returned	if an error  occurs.   The  external  variable
       errno indicates the cause of the	error.

ERRORS
       The dup3() function fails if:

       [EBADF]		  The  oldd  argument is not a valid active descriptor
			  or the newd argument is negative or exceeds the max-
			  imum allowable descriptor number

       [EINVAL]		  The oldd argument is equal to	the newd argument.

       [EINVAL]		  The flags argument has bits set other	than O_CLOEXEC
			  or O_CLOFORK.

SEE ALSO
       accept(2),  close(2),  dup2(2),	fcntl(2),  getdtablesize(2),  open(2),
       pipe(2),	socket(2), socketpair(2)

STANDARDS
       The dup3() function does	not conform to any standard.

HISTORY
       The  dup3()  function appeared in FreeBSD 10.0.	The O_CLOFORK flag ap-
       peared in FreeBSD 15.0.

FreeBSD	15.0			 May 17, 2025			       DUP3(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=dup3&sektion=3&manpath=FreeBSD+15.0-RELEASE+and+Ports>

home | help