Daemon (computer software)

From Wikipedia, the free encyclopedia

(Redirected from Daemon process)
Jump to: navigation, search

In Unix and other computer multitasking operating systems, a daemon (pronounced /ˈdiːmən/ or /ˈdeɪmən/[1]) is a computer program that runs in the background, rather than under the direct control of a user; they are usually initiated as processes. Typically daemons have names that end with the letter "d": for example, syslogd, the daemon that handles the system log, or sshd, which handles the incoming SSH connections.

In a Unix environment, the parent process of a daemon is often (but not always) the init process (PID=1). Processes usually become daemons by forking a child process and then having their parent process immediately exit, thus causing init to adopt the child process. This is a somewhat simplified view of things as other operations are generally performed, such as disassociating the daemon process from any controlling tty. Convenience routines such as daemon(3) exist in some UNIX systems for that purpose.

Systems often start (or "launch") daemons at boot time: they often serve the function of responding to network requests, hardware activity, or other programs by performing some task. Daemons can also configure hardware (like devfsd on some Linux systems), run scheduled tasks (like cron), and perform a variety of other tasks.

Contents

The term was coined by the programmers of MIT's Project MAC. They took the name from Maxwell's demon, an imaginary being from a famous thought experiment that constantly works in the background, sorting molecules.[2] Unix systems inherited this terminology. Daemons are also characters in Greek mythology, some of whom handled tasks that the gods couldn't be bothered with, much like computer daemons often handle tasks in the background that the user can't be bothered with. BSD and some of its derivatives have adopted a daemon as its mascot, although this mascot is actually a cute stereotypical depiction of a demon from Christianity. (The alternative expansion of "daemon" as "disk and execution monitor" is also sometimes used, but is a backronym.)

The word daemon, taken out of its computer science context, is universally pronounced as /'dimən/ (DEE-men) [3][4][5], i.e., as a homonym of the word demon. Perhaps due to the relative obscurity of the word in other contexts, the alternate pronunciation of /'deɪmən/ (DAY-men) has some popularity in its computer science context.

The term daemon often leads to humorous connections with its mythical homonym demon; for example, systems might have an exorcise command to kill off undesired daemons [1], and the parody website OBJECTIVE: Ministries [2] uses this to claim that Apple's BSD-derived Mac OS X is Satanic due to its use of daemons.

In a strictly technical sense, in the Unix world, a process comprises a daemon when it has process number 1 (init) as its parent process and no controlling terminal. The init process adopts any process whose parent process terminates. The common method for a process to become a daemon involves:

  • Disassociating from the controlling tty
  • Becoming a session leader
  • Becoming a process group leader
  • Staying in the background by forking and exiting (once or twice). This is required sometimes for the process to become a session leader. It also allows the parent process to continue its normal execution. This idiom is sometimes summarized with the phrase "fork off and die"
  • Setting the root directory ("/") as the current working directory so that the process will not keep any directory in use
  • Changing the umask to 0 to allow open(), creat(), et al. calls to provide their own permission masks and not to depend on the umask of the caller
  • Closing all inherited open files at the time of execution that are left open by the parent process, including file descriptors 0, 1 and 2 (stdin, stdout, stderr). Required files will be opened later.
  • Using a logfile, the console, or /dev/null as stdin, stdout, and stderr

In common Unix usage a daemon may be any background process, whether a child of init or not. Unix users sometimes spell daemon as demon, and most usually pronounce the word that way.

In the general sense, daemon is an older form of the word demon. In the Unix System Administration Handbook, Evi Nemeth [6] has this to say about daemons:

Many people equate the word "daemon" with the word "demon", implying some kind of satanic connection between UNIX and the underworld. This is an egregious misunderstanding. "Daemon" is actually a much older form of "demon"; daemons have no particular bias towards good or evil, but rather serve to help define a person's character or personality. The ancient Greeks' concept of a "personal daemon" was similar to the modern concept of a "guardian angel" — eudaemonia is the state of being helped or protected by a kindly spirit. As a rule, UNIX systems seem to be infested with both daemons and demons. (p.403)

In the Microsoft DOS environment, such programs were written as Terminate and Stay Resident (TSR) software. On Microsoft Windows systems, programs called services perform the functions of daemons. They run as processes, usually do not interact with the monitor, keyboard, and mouse, and are launched (or not launched) by the operating system at boot time.

On the original Mac OS, optional features and services were provided by files loaded at startup time that patched the operating system; these were known as system extensions and control panels. Later versions of classic Mac OS augmented these with fully-fledged faceless background applications: regular applications that ran in the background. To the user, these were still described as, and disguised as, regular system extensions.

Mac OS X, being a Unix-like system, has daemons. (There are services as well, but these are completely different in concept.)

  1. ^ Raymond, Eric. Jargon File entry for daemon. The Jargon File. Retrieved on 2007-07-18.
  2. ^ Fernando J. Corbató (January 23, 2002). Take Our Word for It. Retrieved on 2006-08-20.
  3. ^ YourDictionary entry for daemon. YourDictionary. Retrieved on 2007-07-18.
  4. ^ Dictionary.com entry for daemon. Dictionary.com. Retrieved on 2007-07-18.
  5. ^ Merriam-Webster pronuncation of daemon. Merriam-Webster Online. Retrieved on 2007-07-18.
  6. ^ http://www.freebsd.org/copyright/daemon.html

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.