• Linux系统编程@进程管理(二)


    1、创建守护进程(Deamon)

      守护进程的概念与作用

      后台服务程序 – 系统服务,进程名字往往以’d’结尾,生存周期比较长(系统装入时启动,关闭时候终止。系统装入两种启动方式:1从启动脚本、etc/rc.d中启动;2由作业规划进程crond启动。也可以从用户终端启动,且独立于控制终端),周期性执行某种任务或等待处理某些发生的事件。
      例如:httpd ftpd lqd crond
      
      
      控制终端:从一个终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端。当控制终端关闭,依附于该终端的进程都会自动关闭;守护进程除外,避免不必要的干扰和交互。

      守护进程创建过程

      1.让init进程成为新产生进程的父进程
       让进程在后台执行
       创建子进程,父进程退出(所有的工作都在子进程中执行,子进程为孤儿进程)
       
    pid=fork();
    if(pid>0) exit(0);
    

       进程组(作业控制)

       在Linux系统中,所有的进程都属于各自的进程组;进程组是一个或多个进程的集合;每个进程组都有进程组Id,由领头进程的进程号决定;进程组的存在与否与领头进程是否存在没有关系。

       子进程一旦运行exec就会不再属于原来的进程组。

       会话(控制终端)

       一个或多个进程组的集合;一个登陆shell发起的会话,一般由一个会话首进程、一个前台进程组、多个后台进程组组成。

       会话首进程:新建会话时,会话中的唯一进程,其PID=SID;它通常是一个登陆shell;进程成为孤儿进程后调用setsid()成为一个新会话。

         

       Question:

       如何查看系统中正在运行的守护进程有哪些?

         找出系统中名字以‘d’结尾的进程:$ ps -el | grep d$

         找出系统中名字以‘k’开头的进程:

         在一组进程中如何判断哪个进程是组长?

      2.调用setsid函数
     
      3.更改当前工作目录
      4.关闭文件描述符,并重定向标准输入、输出和错误输出
      5.设置守护进程的文件权限创建掩码

     

  • 相关阅读:
    SQL Server数据库高级进阶之事务实战演练
    ASP.NET Core使用Nginx搭建高可用分布式Web集群
    C#签名算法HS256和RS256实战演练
    ASP.NET (Core)WebApi参数传递实操演练
    基于Windows服务实现的亚马逊云S3文件上传
    ASP.NET Core WebApi如何动态生成树形Json格式数据
    SQL Server数据库高级进阶之分布式唯一ID生成实战演练
    ASP.NET Core WebApi分布式文件系统FastDFS实战演练
    .Net Core使用NLog记录日志到文件和数据库实战演练
    ASP.NET Core开源任务调度框架Hangfire实战演练
  • 原文地址:https://www.cnblogs.com/kwseeker-bolgs/p/4355985.html
Copyright © 2020-2023  润新知