While many of may not like Poettering's solution, it's difficult to argue that SV is well designed. Just look at a typical Debian setup -- init is parsing inittab, which launches /etc/init/rc, which launches a bunch of scripts in /etc/rc?.d, which in turn use the start-stop-daemon binary to launch your daemons, which still need to double fork in order to create a new session. We've gone through four layers of indirection, and I still need to duplicate the double fork, setsid, open(/var/run/deamon.pid) incantation in every single daemon that I write!
(Let alone the fact that /etc/rc?.d is just one of the many ways to start a service -- there's /etc/inittab, there's /etc/inetd.conf, there's crontab, there's at, there's /etc/acpi/event.d, and probably others I've never used.)
I think that DJB has expressed the issue fairly clearly:
Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds