tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: [RFC] inetd(8) changes proposal
>>>> So I added a new file descriptor type (well, semi-new; they're
>>>> DTYPE_MISC) and a new syscall (pidconn) [...]
>>> In this area (as others, in fact), the Plan9 solution is
>>> [/proc/$PID/ctl]
>> That is unidirectional communication. pidconn is bidirectional.
>> Aside from that, how does the process (a) notice that this has been
>> done and (b) get the string ($cmd in the above) to act on it?
> Controling the process can be made by writing to the "ctl" file (this
> does what some Unix signals do).
Okay, so it's not really comparable to pidconn.
> And if bi-directional IPC is wanted, it can be done at user-level
> with the plumber that allows to "receive, examine, rewrite and
> dispatch messages between programs" as long as the program allows to
> be plumbed (prepared to read and write from conventionally named file
> in the namespace). (It does multiplexing too; it is not only 1<->1.)
> In fact, one can do the same thing probably with Unix.
One can do similar things. I could have, for example, decided that I
would use AF_LOCAL sockets in /IPC/ with names matching participating
process's PIDs. Or I could have used AF_INET6 sockets in host-local
space (I think there's some host-local space defined). Or probably
various other alternatives.
However, none of those was a good-enough match to the semantics I
wanted for me to be content with it. (Most particularly, none of them
have anything stopping process X from using the endpoint appropriate to
process Y and none of them seamlessly handle forking processes.)
It's possible that Plan 9 has something else that would work better.
But switching to Plan 9 just to get this was a _much_ higher cost than
just implementing pidconn() - if it had occurred to me to think Plan 9
might have had something suitable, which it didn't.
> But the concept of having well-known file names to communicate with a
> process is appealing and to not have to set the communication
> channels in every program but just to prepare to use them if the
> program wants too, is a bonus.
Except for the "file names" part of that, I agree. pidconn does
require that programs interested in accepting connections do need to do
a little preparation; I could have implicitly created a listening
endpoint for every process, but I have no good answer to the question
of what happens if you try to connect to a process that isn't
interested in such connections. Either that question needs answering
or participating processes have to declare their interest in such
connections _somehow_. I chose the latter.
I might have been able to do it using mount_portal. I haven't
investigated that; perhaps I should have.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Home |
Main Index |
Thread Index |
Old Index