[systemd-devel] how to end a socket activated daemon

Łukasz Stelmach l.stelmach at samsung.com
Tue Jun 18 03:04:40 PDT 2013


It was <2013-06-17 pon 20:51>, when Lennart Poettering wrote:
> On Fri, 14.06.13 14:33, Zbigniew Jędrzejewski-Szmek (zbyszek at in.waw.pl) wrote:
>
>> On Fri, Jun 14, 2013 at 10:03:00AM +0200, Łukasz Stelmach wrote:
>>> We are converting some daemons to socket activation. Most of them
>>> open unix sockets and manage incoming connections in a main-loop, so
>>> the easiest way to convert it is to create Accept=false socket with
>>> systemd.
>>> 
>>> Now, it is quite well described how to start such daemon, however,
>>> there is little about shutting it down. Should the daemon close(2)
>>> the received sockets? Should it unlink(2) them from a filesystem?
>> close() yes, unlink() no.
>
> Strictly speaking you don't even have to do that. The kernel will
> clean up left-over fds when your process exits, hence you don't have
> to close it explicitly.
>
> But you certainly should not unlink() the socket in the fs, because
> then the socket will not be accessible anymore.

Maybe I've asked the wrong question. I should rather have asked: Can I
close? Can I unlink? Because that's what the code does now and we wanted
to know which parts are common for standalone and
systemd-socket-activated paths.

Thanks for the information.

PS. I think this information should be somewher in the docs. Do you
think the paragraph describing Accept= in the systemd.socket.5 man page
is the right place?
-- 
Łukasz Stelmach
Samsung R&D Institute Poland
Samsung Electronics



More information about the systemd-devel mailing list