Well, what makes a daemon different from a normal program? We usually want to use a daemon to get some of the following features:
- Runs indefinitely
- Offers a service
- Survives even if the calling session ends
- Does not lock a terminal
- Does not lock the any subdirectory
That is, more or less, what a daemon as we know it does. Imagine the SSHD daemon, FTPD, or Apache:
- Runs in the background
- Offers a service you interact with a socket
- Can be started or stopped but no further direct interaction from the command line
- Available when you log in and still there when you log off
- They run in background
You actually have no idea on how they can do all of this.