0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编写daemon进程需要遵循哪些规则?

Linux爱好者 来源:Linux爱好者 作者:Liao Tonglang 2020-12-07 16:24 次阅读

Daemon 进程生命周期长且在后台运行。编写daemon进程需要遵循哪些规则呢?

1、执行fork()函数,父进程退出,子进程继续

执行这一步,原因有两个:

父进程可能是进程组的组长,从而不能够执行后面要执行的setsid函数。

子进程继承了父进程的进程组ID,一定不会是进程组组长,所以子进程一定可以执行setsid。

如果daemon是从终端命令行启动的,那么父进程退出后,shell会显示shell提示符,让子进程在后台执行。

2、子进程执行下面三个步骤

修改当前目录为根目录 如果当前工作路径上包含根文件系统以外的文件系统,那么这个文件系统将不能被卸载。

当然也可以改成其它合适的目录。这里使用函数chdir("/")。

调用setsid 这是为了切断与控制终端的所有关系,创建一个新的会话。

此时无论终端是否发送SIGIN、SIGQUIT或者SIGTSTP或者断开,都与daemon进程无关。

使用umask(0)设置文件模式创建掩码为0 这一步的目的是让daemon进程创建文件的权限属性与shell脱离关系。

因为默认情况下,进程的umask来源于父进程shell的umask。如果不执行umask(0),那么父进程的shell就会影响daemon,造成daemon每次执行的umask信息不一致。

3、再次执行fork,父进程退出,子进程继续

执行完前面两步之后,新建了会话,进程是会话的首进程,也是进程组的首进程;进程ID,进程组ID,会话ID相同;进程和终端失去联系。

但是还差一步。daemon进程有可能会打开一个终端设备:

intfd=open("/dev/console",O_RDWR);这个设备是否会成为daemon进程的控制终端,取决于两点:

daemon进程是不是会话的首进程。

系统实现。(BSD的实现不会成为daemon的控制终端,但POSIX由具体实现决定)。

为了万无一失,需要使用fork()确保daemon不是会话的首进程。

4、关闭stdin,stdout,stderr

关闭之后应该打开/dev/null将0,1,2描述符指向它。这是为了防止后面执行0,1,2上的I/O时出现错误。

C库的daemon函数和这个流程相似,但没有第二次fork。

原文标题:Daemon 进程的创建

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3615

    浏览量

    93710
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62586

原文标题:Daemon 进程的创建

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    村田代理商告诉你贴片电容选用的规则

    在选择贴片电容时,需要遵循一系列一般规则,以确保所选电容能够满足电路的设计需求并具备较高的可靠性和稳定性。以下是一些关键的选用规则: 一、电路需求分析 确定电容的作用: 首先要明确贴片
    的头像 发表于 12-23 15:09 66次阅读

    深入解析Linux程序与进程

    关于某个数据集合的一次运行活动。作为系统进行资源分配和调度的基本单位,是操作系统结构的基础。 程序与进程的关系 进程的状态 基础进程状态 创建状态:进程在创建时
    的头像 发表于 12-18 11:01 77次阅读
    深入解析Linux程序与<b class='flag-5'>进程</b>

    芯盾时代参与编写零信任相关标准

    参加会议,就《标准》草案展开全面、深度的讨论,并明确了下一阶段的工作计划和目标。《标准》的编写工作取得了重要进展,编写进程稳步、有序推进。
    的头像 发表于 11-05 11:07 639次阅读

    改造数据中心需要遵循这五大规则

    在数据中心改造过程中,数据存储问题可能是最艰巨的障碍,以下关于实现数据中心的改造的五大规则,可能会对您有所启发。   1.使存储虚拟化更容易 为了实现数据中心的改造,首先实现存储虚拟化。但是,这项
    的头像 发表于 10-31 11:02 146次阅读

    【软件干货】Android应用进程如何保活?

    在Android应用程序中,为了保证应用的正常运行和稳定性,有时需要对应用进程进行保活。以下是一些实现进程保活的方法:
    的头像 发表于 10-15 17:05 416次阅读
    【软件干货】Android应用<b class='flag-5'>进程</b>如何保活?

    【每天学点AI】五个阶段带你了解人工智能大模型发展史!

    20世纪50年代NLP的早期研究主要基于规则的方法,依赖于语言学专家手工编写规则和词典。这些规则通常是关于语法、语义和句法结构的人工规则
    的头像 发表于 09-25 16:51 478次阅读
    【每天学点AI】五个阶段带你了解人工智能大模型发展史!

    高速pcb布线规则有哪些

    高速pcb布线规则有哪些 高速PCB布线规则 摘要:随着电子威廉希尔官方网站 的快速发展,高速PCB设计变得越来越重要。为了确保信号完整性和电磁兼容性,遵循一定的布线规则至关重要。本文将详细介绍高速
    的头像 发表于 06-10 17:33 857次阅读

    嵌入式系统中C语言的编写规范

    最重要的一条规则 编写代码时最重要的一条规则是:检查周围的代码并尝试模仿它。 作为维护人员,如果收到的补丁明显与周围代码的编码风格不同,这是令人沮丧的。这是不尊重人的,就像某人穿着泥泞的鞋子走进
    的头像 发表于 05-11 08:49 1126次阅读

    FPGA入门必备:Testbench仿真文件编写实例详解

    编写完HDL代码后,往往需要通过仿真软件Modelsim或者Vivadao自带的仿真功能对HDL代码功能进行验证,此时我们需要编写Testbench文件对HDL功能进行测试验证。
    发表于 04-29 10:43 2025次阅读

    降低RF电路寄生信号的八个设计规则

    RF产品电路布局要想降低寄生信号,需要RF工程师发挥创造性。记住以下这八条规则,不但有助于加速产品上市进程,而且还可提高工作日程的可预见性。规则1:接地通孔应位于接地参考层开关处流经所
    的头像 发表于 04-24 08:05 970次阅读
    降低RF电路寄生信号的八个设计<b class='flag-5'>规则</b>

    如何优化 PCB 布线规则

    而言,限制或是规则非常重要;一如我们从小就要学会遵守社会与法律规则。同理,为PCB制定规则应当受到重视。虽然为此需要花费时间进行研究并投入精力,但设置这些限制条件
    的头像 发表于 02-19 13:00 1226次阅读
    如何优化 PCB 布线<b class='flag-5'>规则</b>?

    HarmonyOS跨进程通信—IPC与RPC通信开发

    使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动,用于跨设备跨进程通信。需要进程通信的原因是因为每个进程都有自己独立的资源
    的头像 发表于 02-02 17:47 1279次阅读
    HarmonyOS跨<b class='flag-5'>进程</b>通信—IPC与RPC通信开发

    pcb设计布局布线原则及规则

    的不良影响。在进行PCB布线设计时,需要遵循一定的规则和原则,下面我们将会介绍PCB设计中的六大布线规则。 PCB设计六大布线规则 一:按照
    的头像 发表于 01-22 09:23 2106次阅读

    pcb走线的规则设置方法介绍

    线规则的设置方法,以确保设计的可靠性和性能。 一、规则的制定前提 在制定PCB走线规则之前,有几个前提需要清楚。 设备要求:首先,根据实际设备要求考虑PCB的尺寸、限制
    的头像 发表于 01-09 10:45 2560次阅读

    AD差分信号走线有哪些规则遵循

    AD差分信号走线有哪些规则遵循? AD差分信号走线是在电子系统设计中非常重要的一部分,它涉及信号传输的稳定性、抗干扰性、匹配性等方面。下面我将详细介绍AD差分信号走线的规则,以帮助您更好地理
    的头像 发表于 12-29 13:54 2252次阅读