On 4/07/2018 3:14 AM, Alan Bateman wrote:
On 03/07/2018 18:07, Thomas Stüfe wrote:
:
Actually, at this point we could just:

#if defined(__AIX)
      do {
          rv = close(fd);
      } while (rv == -1 && errno == EINTR);
#else
     rv = close(fd);
#endif
Right, might be the simplest.

+1 with suitable comment


But boy this close() EINTR business is evil. Choosing between risking
file descriptor leaks or random double closes ...

Hopefully it's somewhat academic and we don't actually take signals in arbitrary threads.

Cheers,
David


and we aren't out of the woods yet, there are a few other places that need similar attention.

Reply via email to