I'm trying to understand the use of dup2
and dup
.
From the man page:
DESCRIPTION
dup
anddup2
create a copy of the file descriptoroldfd
. After successful return ofdup
ordup2
, the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file position is modified by usinglseek
on one of the descriptors, the position is also changed for the other.The two descriptors do not share the close-on-exec flag, however.
dup
uses the lowest-numbered unused descriptor for the new descriptor.
dup2
makesnewfd
be the copy ofoldfd
, closingnewfd
first if necessary.RETURN VALUE
dup
anddup2
return the new descriptor, or -1 if an error occurred (in which case,errno
is set appropriately).
Why would I need that system call? What is the use of duplicating the file descriptor? If I have the file descriptor, why would I want to make a copy of it? I'd appreciate it if you could explain and give me an example where dup2
/ dup
is needed.
dup
ordup2
? You need to callpipe(2)
and then to have one of the file descriptorsdup
-ed to e.g.STDIN_FILENO
– Bloat