Re: UDP recvmsg blocks after select(), 2.6 bug?

Martijn Sipkema
2004-10-07T15:32:26Z

From: "Alan Cox" <alan@lxorguk.ukuu.org.uk>
> > Read the standard. The behavious of select() on sockets is explicitely
> > described.
>
> For a strict posix system, but then if we were a strict posix/sus system
> you wouldn't be able to use mmap. Also the kernel doesn't claim to
> implement posix behaviour, it avoids those areas were posix is stupid.

mmap() _is_ in POSIX AFAIK. Also, there are other standards for things
that aren't in POSIX, but these are supersets.

> > > POSIX_ME_HARDER? ;)
> >
> > Would you care to provide any real answers or are you just telling
> > me to shut up because whatever Linux does is good, and not appear
> > unreasonable by adding a ;) ..?
>
> POSIX_ME_HARDER was an environment variable GNU tools used when users
> wanted them to do stupid but posix mandated things instead of sensible
> things. It was later changed to POSIXLY_CORRECT, which lost the point
> somewhat.

I actually also don't agree with this behaviour of the GNU tools..

> > > You really shouldnt assume select state is guaranteed not to change
> > > by time you get round to doing IO. It's not safe, and not just on
> > > Linux - whatever POSIX says.
> >
> > Any sane application would be written for the POSIX API as described
> > in the standard, and a sane kernel should IMHO implement that standard
> > whenever possible.
>
> I doubt that. Sane applications are written to the BSD socket API not
> POSIX 1003.1g draft 6.4 and relatives.

Perhaps... I get the idea that I just seem to value a standard operating
system interface more than you do; it would be a loss IMHO if people
were forced to write for Linux instead of being able to write portable
applications.

The POSIX interface shouldn't become something one reads to get an idea
of how things wil _not_ work on Linux.

--ms