A daemon is a program in execution that has no user interaction means. Technically, a daemon is said “not to have any attached teletype device”. A teletype device is the most basic device for a program to interact with a user via a command line interface. However, just because a daemon cannot interact with a user does not mean a daemon is useless.
A daemon is useful because it provides at least a service to other programs. For example, syslogd lets all the other programs send messages to be logged in the system log file. In other words, a daemon provides at least a service that is useful for many different programs so that the other programs do not need to each implement the same service in duplicate.
There are two kinds of daemons. The first kind consists of processes, while the second kind consists of threads. In this discussion, however, the distinction of a process versus a thread is not important.