On Thu, Oct 29, 2015 at 04:15:33PM +0000, Alan Burlison wrote: > There was an attempt to interpret POSIX that way, with which I still > disagree. If a FD is closed or reassigned then any current pending > operations on it should be terminated.
Could the esteemed sir possibly be ars^H^H^Hprevailed upon to quote the exact place in POSIX that requires such behaviour? This is getting ridiculous - if we are talking about POSIX-mandated behaviour of close(), please show where is it mandated. Using close(2) on a descriptor that might be used by other threads is a bloody bad design in userland code - I think everyone in this thread agrees on that. Making that a recommended way to do _anything_ is nuts. Now, no userland code, however lousy it might be, should be able to screw the system. But that isn't the issue - our variant is providing that just fine. BTW, "cancel accept(2) because sending a signal is hard" is bogus anyway - a thread in accept(3) just about to enter the kernel would get buggered if another thread closes that descriptor and the third one does socket(2). _IF_ you are doing that kind of "close a descriptor under other threads" thing, you need to inform the potentially affected threads anyway, and you'd better not rely on them being currently in kernel mode. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html