1. 守护进程概念

linux三种进程类型之一,是一个在后台运行并且不受任何终端控制的进程。它的生存期较长,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。

守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。

特点

① 始终在后台运行

② 独立于任何终端

③ 周期性的执行某种任务或等待处理特定事件

  1. 相关概念

进程组(Process Group): 进程集合,每个进程组有一个组长(Leader),其进程 ID 就是该进程组 ID。

会话(Session): 进程组集合,每个会话有一个组长,其进程 ID 就是该会话组 ID。

控制终端(Controlling Terminal):每个会话可以有一个单独的控制终端,与控制终端连接的 Leader 就是控制进程(Controlling Process)。

  1. 守护进程的创建

3.1 创建子进程,父进程退出

  if (fork() > 0)  {exit(0);} 

父进程退出后,子进程变成孤儿进程,被init进程收养, 子进程在后台运行。

3.2 子进程创建新会话

if (setsid() < 0)  {exit(-1);
}

子进程成为新的会话组长, 子进程脱离原先的终端。

3.3 更改当前工作目录

   chdir(“/”);chdir(“/tmp”);

守护进程一直在后台运行,其工作目录不能被卸载需要重新设定当前工作目录cwd。

3.4 重设文件权限掩码

    if (umask(0) < 0)  {exit(-1);}

文件权限掩码设置为0, 只影响当前进程。

3.5 关闭打开的文件描述符

     int  i;for(i=0; i<3; i++) {close(i);}

关闭所有从父进程继承的打开文件,由于已脱离终端,所以stdin / stdout / stderr无法再使用。

例1

int  main() {pid_t pid;FILE *fp;time_t  t;int  i;if ((pid = fork()) < 0) {perror(“fork”);  exit(-1);}else if (pid > 0) {exit(0);}setsid();umask(0);chdir(“/tmp”);for (i=0; i< 3; i++) {close(i);}if ((fp = fopen(“time.log”, “a”)) == NULL) {perror(“fopen”); exit(-1); }while  ( 1 ) {time(&t);fprintf(fp, “%s”, ctime(&t));fflush(fp);sleep(1);}

Linux进程-守护进程相关推荐

  1. Linux系统守护进程详解

    文中有不对或者有不清楚的地方,请大家告诉我,谢谢!   Linux系统守护进程详解 不要关闭下面这几个服务: acpid, haldaemon, messagebus, klogd, network, ...

  2. Linux下守护进程(daemon)的实现

    文章目录 守护进程 守护进程的创建 守护进程的实现 守护进程 守护进程是一种特殊的孤儿进程,父进程是一号init进程,运行在后台,与终端和登陆会话脱离关系,不受影响. 守护进程通常系统引导的时候启动, ...

  3. 【Linux】- 守护进程的启动方法

    转自:Linux 守护进程的启动方法 Linux中"守护进程"(daemon)就是一直在后台运行的进程(daemon). 本文介绍如何将一个 Web 应用,启动为守护进程. 一.问 ...

  4. linux php 守护进程,PHP程序员玩转Linux系列 使用supervisor实现守护进程

    PHP程序员玩转Linux系列文章: 首先遇到的问题是,部署nodejs的博客程序时,我把执行nodejs的命令放到后台,使用加&和nohup命令 如:nodejs index.js & ...

  5. Linux的守护进程

    Linux的守护进程: crontab –e –l –r /etc/cron.allow:将可以使用crontab的账号写入其中,若不在这个档案内的使用者则不可使用crontab: /etc/cron ...

  6. linux 安装守护进程supervisor

    linux的守护进程类似于windows的服务.linux通过supervisor创建守护进程. 1.安装supervisor sudo apt-get install supervisor -- u ...

  7. < Linux > 守护进程

    目录 1.守护进程 守护进程的概念 进程组和会话 2.守护进程化的方式 TCP网络程序(守护进程化) TCP网络程序(守护进程化)gitee地址 daemon创建守护进程 nohup命令 1.守护进程 ...

  8. 深入理解Linux操作系统守护进程的意义

    深入理解Linux操作系统守护进程的意义 Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守 ...

  9. 开启子进程的两种方式,孤儿进程与僵尸进程,守护进程,互斥锁,IPC机制,生产者与消费者模型...

    开启子进程的两种方式 # # # 方式一: # from multiprocessing import Process # import time # # def task(x): # print(' ...

  10. Linux supervisor守护进程的安装和使用

    个人网站:http://xiaocaoshare.com/ supervisor守护进程的介绍 Supervisor(http://supervisord.org/)是用Python开发的一个clie ...

最新文章

  1. python用def编写calsum函数_Python函数
  2. 再次修订后的版本。。。。。。1.0(发布版,射线求交三角形)
  3. 大型三甲医院管理系统源码PACS超声科室源码DICOM影像工作站
  4. 32 串口波特率_「正点原子FPGA连载」第五章串口中断实验
  5. 【Java】Fibonacci数列编程实现
  6. Android笔记 activity生命周期 Tasks and back stack回退栈
  7. Spring Cloud 个人心得 理论
  8. PhpStrom 配置Xdebug
  9. Openresty+Nginx+Lua+Nginx_http_upstream_check_module 搭建
  10. netcat运行出错
  11. test.php变成夏总,test.php
  12. Java实现文件或文件夹的复制到指定目录
  13. GEE开发之Landsat8_SR计算NDVI和数据分析
  14. 如何在工具类中注入Service
  15. 递归(recurse)与迭代(iteration)
  16. 利用云效度量功能进行质量运营和效率驱动提升
  17. Three.js地球开发—6.三维球面上某点进行贴图标注
  18. js 时间转东八区_js:固定与东八区服务器时间保持一致并且可选时间格式
  19. 给你的2D游戏添加3D效果
  20. 最新微信公众号怎么申请?

热门文章

  1. 【Java编程】05_Java API
  2. 分享一些Linux命令实用小技巧,欢迎评论区补充
  3. c语言之strftime与strptime
  4. 微信智慧共享停车位小程序系统设计与实现
  5. OSCP靶机练习--CuteNews02
  6. android-Framework,imageLoading, Animations,Network,Tast/Job
  7. 深入HBASE原理详解
  8. The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games 阅读笔记
  9. 【视频解读】动手学深度学习V2_01课程介绍
  10. [附源码]SSM计算机毕业设计音乐网站JAVA