I realize that dup2() clears the FD_CLOEXEC flag on the new file
descriptor so the "normal" case of an opened file being dup2() down to
0 would work correctly, but the wrinkle is that it does NOT if the old
and new file descriptor are the same. That is admittedly unlikely,
but it could happen in a few cases so I'd like to be as robust as
possible.
Are you aware of dup3(2)?
Hm, I had to poke around for that one. I see:
dup3() is Linux-specific.
(I'm aware that it seems to have made it to other operating systems, but
I don't think we can rely on it). Also, it seems like dup3() doesn't
do what I want, exactly. Specifically:
If oldfd equals newfd, then dup3() fails with the error EINVAL.
What I would like is a dup4(), where even if oldfd == newfd, then the
close-on-exec flag is cleared. Not really a huge issue; we can work
around it.
--Ken
--
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers