Vincent Bernat <ber...@debian.org> writes:

> inetd uses stdin/stdout to communicate with the daemon and have to
> launch one instance for each client connecting. systemd.socket pass a
> regular listening socket on first connection to the daemon and the
> daemon can then serve multiple clients.

I believe the wait option for at least xinetd behaves in roughly the same
way, although it's normally only used for UDP services.

There seems to be a clear infrastructure gap for the non-systemd world
here that's crying out for some inetd-style program that implements the
equivalent of systemd socket activation and socket passing using the same
protocol, so that upstreams can not care whether the software is started
by systemd or by that inetd, and provides an easy-to-configure way for
Debian packages to indicate this should be used if systemd isn't in play.
It doesn't seem like it would be too difficult to implement such a thing,
but I don't think it already exists.

I believe the convention in the runit/daemontools world is to decide this
is not an important problem to solve and lots of small running daemons is
not something that needs to be avoided, and to use tcpserver or some
equivalent that behaves like inetd for a single service.  Even here,
though, I'm not sure if any of those implementations use the same socket
passing protocol as systemd, and I'm not sure if they're yet trivial to
configure as part of Debian packaging.

-- 
Russ Allbery (r...@debian.org)               <http://www.eyrie.org/~eagle/>

Reply via email to