On 03/14/2018 12:30 PM, Eric Blake wrote:
On 03/14/2018 12:09 PM, Bruno Haible wrote:
Here's what POSIX has to say:
http://austingroupbugs.net/view.php?id=529#c1200
Glad to see that this has been addressed in POSIX.
I think we'll need to fall back to a #if based on platforms.
If I'm reading the POSIX bug correctly, HPUX is the only system where
fds are left open on EINTR. Seems like a reasonable enough #if when
coupled with good comments pointing back to the POSIX discussion.
One other possible alternative: instead of calling close(fd) on a random
unknown fd, and worrying about the non-portability of EINTR behavior
when that fd is something that takes a long time to close, you could use
dup2()'s semantics to replace the original fd with something known to be
safe to close (for example, closing an fd open on /dev/null doesn't have
the risk of EINTR like you would have with closing an fd open on a pty
or tape device).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org