守护进程原理:如何将普通应用程序转化为后台服务

浅芳酱_3705

浅芳酱_3705

2026-06-15

260人浏览

原创

守护进程必须通过两次 fork + setsid 脱离终端控制,再清理环境(chdir("/")、umask(0)、关闭文件描述符)、重定向标准流,或交由 systemd 统一管理。

守护进程原理:如何将普通应用程序转化为后台服务

普通程序默认依附于终端,关掉 SSH 或退出 Shell 就会终止;要让它变成持续运行、不受终端影响的后台服务,关键不是简单加个 &,而是通过一套标准的“守护化”流程,切断与终端的所有关联,并重置运行环境。

脱离终端控制:两次 fork + setsid

第一次 fork 后父进程退出,子进程成为孤儿进程,被 init(PID=1)收养;接着调用 setsid() 创建新会话,使进程脱离原控制终端、不再响应 SIGHUP 等终端信号;再 fork 一次,确保它不能重新获得控制终端(因为会话首进程在某些条件下可能再次打开终端)。这三步共同保证进程彻底“断联”。

清理运行环境:目录、权限、文件描述符

守护进程不能卡在某个挂载点下,否则卸载该目录会导致异常;也不能继承父进程的 umask 或打开的文件句柄:

onewo-rtlinux
onewo-rtlinux

Linux 实时编程助手。生成、审查并修改用于周期性控制任务和中断驱动程序的 C 代码。强制实施实时调度策略。

下载
  • chdir("/") 切换到根目录,避免阻塞文件系统卸载
  • 调用 umask(0) 重置权限掩码,让后续创建的文件权限可控
  • 遍历关闭所有已打开的文件描述符(通常用 sysconf(_SC_OPEN_MAX) 获取上限),防止资源泄漏

重定向标准流:屏蔽输入输出干扰

守护进程没有终端,标准输入、输出、错误不能再指向 tty。常规做法是:

  • 打开 /dev/null 三次,分别用于重定向 stdin(fd 0)、stdout(fd 1)、stderr(fd 2)
  • 也可重定向到日志文件,但需确保路径存在、有写权限,并考虑日志轮转

现代系统推荐:交给 systemd 管理

手动实现守护化容易出错,且缺乏自动重启、依赖管理、资源限制等能力。现在更推荐编写 systemd service 单元文件,由 systemd 负责启动、守护、日志收集和故障恢复:

  • 设置 Type=simple(默认)或 Type=notify(配合 sd_notify)
  • Restart=always 实现崩溃自启
  • 通过 User=LimitNOFILE= 等字段安全约束运行环境

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

397

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2352

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

796

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

689

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

354

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2096

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3852

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

627

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ubuntu官方总文档
ubuntu官方总文档

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习