守护进程(Daemon Process)

守护进程(Daemon Process)

【Linux】守护进程( Daemon)的定义,作用,创建流程_守护进程:运行在后台的一种特殊进程,独立于控制终端并周期性地执行某些任务。-CSDN博客
Linux系统编程——特殊进程之守护进程_禁止 子进程 集成 父进程 信号处理-CSDN博客

什么是守护进程,用在什么地方?

守护进程不受终端控制,其信息也不会在终端显示。
终端:启动进程的那个窗口,一般来说,进程会受该窗口的控制,该窗口关闭,进程也随之关闭。

从作用上看,该进程会守护其他进程,即周期性地执行某种任务或等待处理某些发生的事件。
常见的用途:系统服务,网络服务,日志记录

守护进程在系统的表现象

使用ps -axj可以看到

  1. TTY(Teletypewriter):控制终端
    • 守护进程没有控制终端,TTY为?
  2. PPID(Parent Process ID):父ID
    • 守护进程父ID为1(所有进程的最初祖先)
  3. TPGID(thread group id):线程组 ID,即线程组组长的 PID,真正的进程 ID,如果进程只有一个线程则他的 PID 和 TGID 相同
    • 守护进程TGID为-1

如何使用守护进程

  1. fork()创建子进程,父进程exit()退出
    • 子进程会变为孤儿进程 ,挂到祖先那
  2. 在子进程中调用 setsid() 函数创建新的会话
    • 设置新的会话ID -> 摆脱和当前窗口的联系
  3. 再次 fork() 一个孙进程并让子进程退出
    • 再次退出父进程 -> 当前不再是会话的领导 永远不会受到窗口的影响
  4. 在孙进程中调用 chdir() 函数,让根目录 ”/” 成为孙进程的工作目录
  5. 在孙进程中调用 umask() 函数,设置进程的文件权限掩码为0
  6. 在孙进程中关闭任何不需要的文件描述符
  7. 处理信号
    • 当用户需要外部停止守护进程运行时,往往会使用 kill 命令停止该守护进程。所以,守护进程中需要编码来实现 kill 发出的signal信号处理,达到进程的正常退出。
    • SIGHUP:虽然守护进程和终端断开,但仍然有可能收到其它进程或内核发来的SIGHUP信号,守护进程不应该因为它而终止。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值