What is a Daemon?

In short, a Daemon is a background process.

Daemons can just be normal programs that run in the background, however most are created by starting a process, forking it and exiting the parent.

To fork a process means to create an exact copy of it. The parent of that process, if the real parent terminates right away, is now the init process at /sbin/init, which is the first thing started on every Unix-like operating system. Now, the process is termed a Daemon, it has no TTY associated with it.

Here's an example of a Daemon in Python:

import sys, os, time

pid = os.fork()

# there now exist two processes
if pid > 0: # If this is the parent,
    sys.exit(0) # quit.

# this is the background part:
time.sleep(5)
print "Hello, World!"

It's not yet one, strictly speaking. You'd also have to change the current working directory, redicted standard input and output to log-files and so on. You can read up on the gory details in this wikipedia article.

If you run the example, you'll notice, after two seconds it prints, even though the process you started on the command-line has terminated. The copy of this process is run 'by' init now.

Tags:

Services