守护进程是在后台运行不受终端控制的进程(如输入、输出等),一般的网络服务都是以守护进程的方式运行。守护进程脱离终端的主要原因有两点:(1)用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。(2)(如其他用户登录该终端后,以前的守护进程的错误信息不应出现)由终端上的一些键所产生的信号(如中断信号),不应对以前从该终端上启动的任何守护进程造成影响。要注意守护进程与后台运行程序(即加&启动的程序)的区别。

创建守护进程的过程:  

  1. fork子进程, 父进程退出, 所有工作在子进程中进行形式上脱离了控制终端; 必须

  2. 子进程创建新会话, setsid函数, 使子进程完全独立出来, 脱离控制; 必须

  3. 改变当前目录为根目录, chdir()函数, 防止占用可卸载的文件系统, 也可以换成其它路径, 为了增强程序的健壮性; 非必须

  4. 重设文件权限掩码, umask()函数, 防止继承的文件创建屏蔽字拒绝某些权限, 增加守护进程灵活性; 非必须

  5. 关闭文件描述符, 继承的打开文件不会用到, 浪费系统资源, 无法卸载, close(0), close(1), close(2); 非必须

  6. 执行核心工作

  7. 守护进程退出处理程序模型;

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <

UNIX(进程间通信):05---守护进程相关推荐

  1. linux中daemonize用法,daemonize Unix系统后台守护进程管理软件

    在我们的工作中,很多时候都需要在linux中后台运行程序, 方法1: nohup & 方法2: daemonize Unix系统后台守护进程管理软件 优点:更加正规 后台运⾏更稳定 git c ...

  2. UNIX再学习 -- 守护进程(转)

    参看:守护进程 一.什么是守护进程 守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程.它是一个生存期较长的进程,通常独立于控制 ...

  3. UNIX(进程间通信):01---Linux进程通信方式

    Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间 ...

  4. UNIX中后台进程与守护进程

    后台进程 默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作.对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目 ...

  5. 笔记整理--Linux守护进程

    Linux多进程开发(三)进程创建之守护进程的学习 - _Liang_Happy_Life__Dream - 51CTO技术博客 - Google Chrome (2013/10/11 16:48:2 ...

  6. linux+守护进程+php,【转载】Linux 守护进程的编程方法

    [转载]Linux 守护进程的编程方法 原文见: http://www.linuxdevelop.org/tingxx/show.php?table=c&id=3 Linux 守护进程的编程方 ...

  7. Linux 守护进程创建原理及简易方法

    1:什么是Linux下的守护进程 Linux daemon是运行于后台常驻内存的一种特殊进程,周期性的执行或者等待trigger执行某个任务,与用户交互断开,独立于控制终端.一个守护进程的父进程是in ...

  8. Linux守护进程的编程实现

    Linux 守护进程的编程方法 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程.Linux的大多数s ...

  9. 用c语言编写linux守护进程

    2019独角兽企业重金招聘Python工程师标准>>> 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程 ...

  10. linux守护进程编程,Linux守护进程的编程实现

    Linux 守护进程的编程方法 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程.Linux的大多数s ...

最新文章

  1. 架构师之路 — 分布式系统 — gRPC 谷歌远程过程调用
  2. windows time 服务无法启动 错误1058 解决方法
  3. 判断一个整数是否是水仙花数 || 编写程序,根据输入的月份和年份,求出该月的天数(1-12)|| 运算符的优先级问题 ||输出小写的a-z以及大写的Z—A||求出1-1/2+1/3-1/4…..1/
  4. graphpad 折线图横坐标比例_GraphPad Prism绘制剂量反应曲线
  5. 翻译 | 2015年的最佳Material Design集锦 【上篇】
  6. C# 【无法修改XX返回值,因为它不是变量】
  7. 为什么会有那么多的人选择Java?学Java到底好不好?
  8. 在Web中如何运用JavaScript实现打印功能
  9. ajax请求 apend,jsp如何获取ajax append的数据?
  10. 机器学习速成课程 | 练习 | Google Development——编程练习:创建和操控张量
  11. 一张图看尽 Linux 内核运行原理
  12. 解决Element的 InfiniteScroll 无限滚动组件报错
  13. 台达伺服ASD-B2的调试
  14. 3D建模和处理软件以及相关的库(来自中科大老师)
  15. 在线教育:最常见的直播课程有哪些?
  16. 计算机网络基础试题2,计算机网络基础试题库2
  17. Opencv函数 rectangle函数与Rect函数的用法
  18. IIS的ISAPI接口简介
  19. 孙子兵法全文(原文)
  20. 计算机专业保研面试备考:操作系统

热门文章

  1. [Qt] 利用QtWebKit完成JavaScript访问C++对象
  2. WinCE 字体平滑 ClearType
  3. css 商城 两列_【云控基础】HTML+CSS基础入门
  4. python文件函数_python文件和文件夹复制函数
  5. mysql replace first_Java replaceFirst()方法
  6. 【转】dicom网络通讯入门(3)
  7. 【转】深入理解Windows消息机制
  8. 【转】1:C#的三种异步的详细介绍及实现
  9. Sharepoint学习笔记—Site Definition系列-- 3、创建ListDefinition
  10. 详解Class类文件的结构(下)