On Tue, 27 Aug 2019 15:40:02 -0700 Larry McVoy <lm(a)mcvoy.com> wrote:
Larry McVoy writes:
and I can tell you that sockets are WAY WAY better. I
get the "it
should have just been file I/O" except that I don't. I tried to
write a library that let you open up /net/tcp/$host:$port and do
I/O like it was a file descriptor. That works for a lot of stuff
but I ran into problems quickly. A networking connection is not
a file handle. You can make some stuff work but I couldn't figure
out how to do all of it. You end up having to do ioctls to handle
the stuff that doesn't fit well into the file system name space.
I think plan 9 did this sort of thing, maybe Rob can prove me wrong
or remember where it didn't match.
Plan9 does a decent enough job.
cpu% ls /net/tcp
/net/tcp/0
/net/tcp/1
/net/tcp/2
/net/tcp/clone
/net/tcp/stats
cpu% ls /net/tcp/1
/net/tcp/1/ctl
/net/tcp/1/data
/net/tcp/1/err
/net/tcp/1/listen
/net/tcp/1/local
/net/tcp/1/remote
/net/tcp/1/status
cpu% cd /net/tcp/1
cpu% cat local remote
192.168.1.103!17010
192.168.1.11!52027
See
http://doc.cat-v.org/plan_9/4th_edition/papers/net/
Replacing ioctls with writing ascii commands to ctl files was
a significant improvement. For one thing you can do all this
from a shell script.
plan9 would've been a big improvement over *BSD or Linux. But
I think a conceptual merge was needed between some sane
version of Unix and plan9 so as to not throw out all the dusty
decks.