在linux下的一种特殊进程称为守护进程,其作用是在后台默默提供服务的,随系统结束而结束,或者是kill -9 的信号结束
daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程)

ps -aux

命令得到的程序中在tty 一栏中为?的皆为守护进程,说明不隶属于任何的控制台的程序。

一般我们在终端中执行的程序其父进程都是bash ,子进程在bash结束后,会被回收

实现守护进程有以下的几个步

  1. 子进程等待父进程退出
  2. 子进程使用setsid创建新的会话期,脱离控制台
  3. 调用chdir将当前工作目录设置为/
  4. umask设置为0以取消任何文件权限屏蔽
  5. 关闭所有文件描述符
  6. 将0、1、2定位到/dev/null

  • 通过在父进程中执行 exit() 先于子进程退出
    这样子进程的父进程就自动的切换为了init
  • chdir(“/”); 切换工作目录为根目录
  • umask();
  • close();所有的打开的文件描述符
  • open(/dev/null)连续三次,使得STDIN,STDOUT,STDERR,都对应的是/dev/null也算是系统的垃圾桶
  • 这样就可以实现一个守护进程

下面是实现的代码demo:

void deamon_creator(char *cmd)
{  pid_t pid;  int i;  int fd0, fd1, fd2;  if ( (pid = fork()) < 0){  printf("fork failed\n");  return;  }  else if (pid > 0){    //the parent process terminate!  exit(0);  }  if (setsid() < 0){    //set the sid  printf("setsid failed\n");  return;  }for (i = 0; i < sysconf(OPEN_MAX); i++){    //get the num of max_opened  close(i);  }  if (chdir("/") < 0){  printf("chdir failed\n");  return;  }  umask(0);    //set the mask  fd0 = open("dev/null", O_RDWR);  fd1 = dup(0);  fd2 = dup(0);   //copy the fd one by onefor(;;);
}

deamon守护进程相关推荐

  1. python实现DEAMON守护进程

    1 守护进程 1.1 守护进程 守护进程是系统中生存期较长的一种进程,常常在系统引导装入时启动,在系统关闭时终止,没有控制终端,在后台运行.守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端 ...

  2. C++ 实现守护进程

    文章目录 1.守护进程概念 1.什么是守护进程 2.守护进程的特点 3.如何查看linux系统中已存在的守护进程 2.守护进程编写的步骤 3.示例 1.守护进程概念 1.什么是守护进程 Linux D ...

  3. java 守护进程 linux_Java使用appache deamon实现linux守护进程

    2014-02-11 06:30:02 阅读( 383 ) 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务 ...

  4. 守护进程(setsid、getpgrp、setpgid、getpgid)以及系统日志(openlog、syslog、closelog)...

    守护进程:精灵进程 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件. 特点: 1.脱离控制终端 2.会话的leader 3.进程组 ...

  5. fork+exit+php,php实现简单的守护进程创建、开启与关闭操作

    本文实例讲述了php实现简单的守护进程创建.开启与关闭操作.分享给大家供大家参考,具体如下: 前提要安装有pcntl扩展,可通过php -m查看是否安装 class Daemon { private  ...

  6. linux 守护进程_网络工程师之linux守护进程

    Linux守护进程就是通常所说的DEAMON进程,linux后台服务多种多样,每一个服务都运行一个对应的程序,这些后台程序对应的进程就是守护进程.系统中可以看到很多如DHCPD和HTTPD之类的进程, ...

  7. 琐记8:恐怖的僵尸进程与温暖的守护进程

    1.被我标题吸引进来的同学先不要着急,在讨论标题中的内容之前,我们需要先了解下进程的终止: exit 与_exit 函数都是用来结束进程的函数,首先是exit:它的头文件:<stdlib.h&g ...

  8. linux daemon(守护进程)

    什么是Daemon Daemon程序,又称为守护进程,通常在系统后台长时间运行,由于没有控制终端而无法与前台交互.Daemon程序一般作为系统服务使用.Unix/Linux中的daemon进程类似于W ...

  9. php 如何守护进程_PHP 编写守护进程

    PHP 创建守护进程进程根据状态可以分为三种进程,守护进程,僵尸进程,孤儿进程.今天我们着重来分析下守护进程. 简介 守护进程 (daemon) 是一类在后台运行的特殊进程,用于执行特定的系统任务.很 ...

最新文章

  1. matlab“机器学习和深度学习”系列工具箱作用总结
  2. 10.5 QQ 支持
  3. A XSS filter for Java EE web apps--转载
  4. 百度工程师手把手教你实现代码规范检测工具
  5. 一个改进的小要求--限定随机数的个数,生成的随机数总和在一定范围内
  6. Sharepoint 2010新体验之一-----基于Claims的全新验证机制
  7. 蓝牙最新版本6.0_FIIL新品 T1 Lite,蓝牙5.2加持下的TWS耳机
  8. ubuntu 以太网已连接但是无法联网_连接wifi时,出现“已连接但无法访问互联网”,这样做就可以了...
  9. C#winform可视化(当主窗体不能拖动时)
  10. MongoDB数据文件内部结构
  11. 性能监控 TP 指标
  12. 【WeNews】三胞债务重组方案出炉 650亿元金融债务如何化解
  13. 手机丢了微信聊天记录怎么恢复?别担心,教你一招找回
  14. 基于springboot+vue的食疗系统
  15. mysql查询1971年以前_mysql 初篇
  16. Python亲戚计算器
  17. 不在同一局域网的两台电脑如何通过ssh连接
  18. .netCHARTING报表图表控件详细介绍
  19. 程序员在职场中该不该守规矩,讲原则
  20. 管理学之人际关系理论

热门文章

  1. mysql时间戳在某天内_mysql根据时间戳查询指定日期内数据
  2. Java黑皮书课后题第7章:**7.5(打印不同的数)编写一个程序,读入10个数,显示互不相同的数的数目,并以输入的顺序显示这些数字,以输入的顺序显示这些数字,以一个空格分隔。
  3. Luogu 1941 飞扬的小鸟
  4. C:简单的学生信息处理程序实现
  5. iOS开发常用的第三方
  6. WCF学习- 基础概念
  7. 名为“ds”的+DataTable+已属于此+DataSet
  8. “天昌”的挽歌——逝去的背影(一)
  9. Page_Load Page_Init方法使用原理(转)
  10. 究竟什么能使得生活变得圆满?