守护进程

在一個多工的電腦作業系統中，守护进程（，或）是一種在后台执行，而不由用户直接交互控制的电脑程序。此类程序会被以进程的形式初始化。-{zh-cn:守护进程程序;zh-tw:常駐程式}-的名称通常以字母d结尾，以指明这个进程实际是守护进程，并与普通的电脑程序区分开来。例如，就是指管理系统日志的守护进程，是接收传入SSH连接的守护进程。

在Unix环境下，守护进程的父进程通常（但不一定）是init进程，且在UNIX系统进程层级中直接位于init之下。守护进程通常由如下方法创建：一个进程執行fork生成一个子进程然后立即终止，使得这个子进程能在init下运行；或者直接由init启动守护进程。另外，通过“fork并终止”产生的守护进程一般还需要执行其他操作，如解除此进程与任何控制终端（tty）之间的关联。这类流程在Unix上的daemon(3)已有实现。

系统通常在启动时一同啟動守护进程。守护进程会执行一些任务以响应网络请求、硬件活动或其他应用程序的请求。像cron这样的守护进程还会在指定时间运行指定任务。

术语
“守护进程”这个概念由麻省理工学院MAC项目的程序员发明。費南多·柯巴托于1963年在MAC项目工作。根据他的说法，他的团队最早采用daemon这个概念，其灵感来源于麦克斯韦妖——一种物理学和热力学中虚构的媒介，能帮助排列分子。他对此表示：“我们别出心裁地开始使用daemon这个词来描述后台进程，它们不知疲倦地处理系统中的杂务。”Unix系统继承了这个术语。作为一种在后台起作用的超自然存在，麦克斯韦妖与古希腊神话中的代蒙一致。

通常来讲，daemon是单词“demon”较早的拼写形式，源于希腊语δαίμων。在Unix系统管理手册中对守护进程有如下阐释：

现代语境下，daemon一词发音为 。而在计算机软件的语境下，原本的发音在一些人那里变为 。

守护进程的别名包括服务（用于Windows NT及更高版本，后来也用于Linux），启动任务（IBM z/OS），以及幽灵进程（XDS UTS）。

当这个概念用于计算机领域时，它有了另一种合理解释：磁盘与执行监视器（Disk And Execution MONitor）的逆向首字母缩略词。

连接到计算机网络的守护进程就是网络服务。

实现

MS-DOS
在微软DOS环境下，类似于守护进程的程序以终止及常驻程式（TSR）的形式出现。

Windows NT
在Windows NT系统上，名为Windows服务的程序行使守护进程的功能。这些进程在运行时通常不与显示器、键盘、鼠标交互，可以在操作系统启动时由系统启动。 而在Windows 2000及之后的系统上，借助控制面板——一个专用的控制/配置程序、服务控制管理器（命令）的服务控制器组件、和命令或PowerShell脚本系统，用户可配置或手动启动/停止Windows服务。

然而，任何Windows应用程序可以行使守护进程的角色，而不仅仅是一个服务；一些Windows守护进程也有以普通进程运行的选项。

Classic Mac OS及macOS
在Classic Mac OS上，可选功能与服务由启动时加载的文件提供，它们会修补操作系统；这些文件称为“系统扩展”和“控制面板”。后期版本的Classic Mac OS利用成熟的“无面孔”后台应用程序——运行于后台的常规应用程序增强了这些功能。对于用户而言，系统仍然将这类程序描述为常规系统扩展。

作为一种Unix系统，macOS采用守护进程。注意macOS的“服务”指服务菜单中指定的、行使特定功能的软件，与Windows上这个词所指的守护进程并不相同。

 参考文献 

 外部链接 
 Tutorial: Unix Daemons in Perl
 HowTo: Linux Daemons with gcc
 Daemon source code in C under UNIX
 關於Daemon譯名的討論

Category:进程
Category:服务器