dup33
Duplicate an existing file descriptor
Usage
#include <fcntl.h>
#include <unistd.h>
int
dup3(int oldd, int newd, int flags);
Library
Standard C Library (libc, -lc)
Overview
The dup3() function duplicates an existing object descriptor while allowing 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.
The resolve-beneath flag on the new file descriptor is preserved.
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 maximum 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.
Releases
30 releases since FreeBSD 10.0-RELEASE; the text changed 18 times.