Re: dup2() vs dup3() inconsistency when

From: H. Peter Anvin
Date: Thu Oct 09 2008 - 16:58:00 EST


Ulrich Drepper wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

H. Peter Anvin wrote:
The result of dup3(fd, fd, O_CLOEXEC) is to set the O_CLOEXEC flag on fd.

That's bad and disregarded by Al and myself because it is one and the
same descriptor and therefore it changes the source descriptor.

It's not the source descriptor, per se, it is the "new" descriptor, which happens to have a side effect of closing the "old" descriptor.

Step (2) could be considered a bit dubious, but the behaviour of
dup2(fd, fd) is a direct consequence of the chosen semantics.

The behavior of dup2(fd,fd) is just a result of an accident in the
original implementation. It makes no sense and the mistake doesn't have
to be repeated.

Inconsistency is bad, too, and one could *definitely* argue that the fundamental problem is the one of closing a pre-existing descriptor rather than forcing the user to do that explicitly if that behaviour was desired.

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/