Creating a more modern daemon for systemd
Daemons that are handled by systemd don't need to fork or close their file descriptors. Instead, it's advised to use standard output and standard error to write the daemon's logs to the journal. The journal is systemd's logging facility.
In this recipe, we'll write a new daemon, one that doesn't fork and leaves stdin, stdout, and stderr open. It will also write messages to standard output every 30 seconds (instead of to the
/tmp/my-daemon-is-alive.txt file, as before). This kind of daemon is sometimes referred to as a new-style daemon. The old forking type, for example,
my-daemon-v2.c, is referred to as a SysV-style daemon. SysV was the name of the init system before systemd.
For this recipe, you'll only need what's listed in the Technical requirements section of this chapter.
How to do it...
In this recipe, we'll write a new-style daemon:
- This program is a bit...