System daemons
As already stated, a daemon is a computer program that runs as a background process; in particular, for a Unix system, the Unix bible Advanced Programming in the UNIX Environment by Richard Stevens says:
Daemons are processes that live for a long time. They are often started when the system is bootstrapped and terminate only when the system is shutdown. We say they run in background, because they don't have a controlling terminal.
This behavior is so important that a special function has been implemented in the glibc library that permits the developer to easily create a daemon process. The function is (obviously) named daemon()
.
Just to fix this concept, we report a possible implementation of the daemon()
function in order to show you which steps a process should carry out in order to turn itself into a daemon:
int daemon(void) { Â Â Â int fd; Â Â Â /* Create the daemon grand-child process */ Â Â Â switch (fork()) { Â Â Â case -1: Â Â Â Â Â Â Â return -1;Â Â Â /* error! */ Â Â Â case 0...