Linux的守护进程 [补档-2023-08-10]
12-1守护进程
12-1-1介绍
Daemom是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或者事件。这些进 程一般不直接和用户交互,不受用户的登录,注销等影响。没有控制终端。
假设我们可以通过crlt+z来强制结束进程,但是当我们连续多次crlt+z后,发现现在并没有关闭我们的终 端,这就是守护进程的用处,它不受用户的影响,它维护着系统中一些基本的功能。
12-1-2 进程组与会话
进程组:
是一个或多个进程的集合,每个进程都有属于它的进程组,有时候我们使用进程组可以更方便的对进程进行管理。当父进程创建子进程的时候,默认子进程与父进程都同属于一个进程组。
进程组的ID == 第一个进程的ID,同时这个进程也叫组长进程。例如一个父进程创建了很多个子进程,父进程和多个子进程就同属于一个组,由于父进程是进程组的第一个进程,所以父进程就是进程组组长。
可以实现某些信号来将整个进程组内的进程杀死。只要进程组还有一个进程存在,那进程组就存在,与组长是否存在无关。进程组的生命周期:从创建开始到最后一个进程离开。
会话:
一个会话是由一个或多个进程组组成的集合。在建创一个会话时,需要创建一个新的进程组,并将该进程组的组长设置为创建会话的进程。因此,如果创建会话的进程本身已经是一个进程组的组长进程,那么就无法再创建会话了。
创建会话的进程成为一个进程组的组长进程,负责管理和控制该进程组中的其他进程。同时也因为创建会话的进程是第一个加入会话的,使用该进程会成为会话的会长。
当创建一个新会话的时候,它会丢弃原有的控制终端的链接。
12-2 创建守护进程
第一步:在父进程中调用fork函数创建一个子进程,并且在子进程中使用setsid函数创建一个新的会话。
第二步:关闭标准输入,标准输出和标准错误的文件描述符。以防止终端关联并避免输入日志等干扰。
第三步(可选):改变并且工作目录,使用chdir(路径)来改变。
第四步:执行核心工作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了