Re: Linux-1.3.81

Miquel van Smoorenburg (
1 Apr 1996 15:19:59 +0200

In article <Pine.LNX.3.91.960331185920.3613B-100000@linux.cs.Helsinki.FI>,
Linus Torvalds <torvalds@cs.Helsinki.FI> wrote:
>On 31 Mar 1996, Miquel van Smoorenburg wrote:
[about fifos]
>> With the old SunOS behaviour it was possible to open a fifo once,
>> do a select() on it and accept incoming requests from different
>> clients. Now the server has to keep open()ing and close()ing the fifo,
>> which is not pretty and will break lots of stuff.
>However, I do like the new code better ("new" - it's actually the
>original linux behaviour, but I had to change it because too many SunOS
>people complained). And the new behaviour is also the same as Solaris etc
>SVR4 boxes, so any truly _portable_ program shouldn't break anyway.
>I don't like the SunOS (pre-81) behaviour, because some programs _want_
>to be able to know when the clients have gone away, and returning 1 for
>select when there are no writers is the "logically" correct thing to do
>anyway, when you look at what "read()" does.

Okay. I think it would be reasonable for Linux to change the behaviour.
Applications _will_ break but people will expect them to break as they
upgrade to the 1.4 or 2.0 kernel.

However the old behaviour should be selectable; I'm not only thinking of
sysvinit that needs it but what about the Sparc port? Sparc Linux is
capable of running SunOS binaries, but it needs the Sun select() behaviour
ofcourse. Presumably the BSD compatibility library (libbsd.a) also needs it.
Unlike the timeval structure, there is no way to emulate the old behaviour.

Now don't ask me how to implement this.. Pity that there is no "flags"
argument to the select() call.. An ioctl? Nah..

Overall it seems important to me that the old behaviour is either
restored or made available in another way. In the mean time, I'll
shut up and fix sysvinit ;)


  Miquel van    | Cistron Internet Services   --    Alphen aan den Rijn.
  Smoorenburg,  | | Tel: +31-172-419445 (Voice) 430979 (Fax) 442580 (Data)