什么是守护进程?其实感觉守护进程并没有什么明确的定义,只是守护进程有一些特征,这是它需要遵循的。

  守护进程的第一个特征是长时间在后台运行的程序,并且主要是为了提供某种服务,而为了能够让服务尽可能随时都可用,就要求这个服务是一直运行的,于是守护进程就守护着这个服务不挂掉。linux里面常见的守护进程一般都是以d结尾的,比如apache的httpd,samba的smbd,ssh的sshd。

  它的第二个特征是与启动它的进程的环境隔离,包括关闭它打开的所有文件描述符,终端,会话,进程组,某些环境变量(如工作目录),文件掩码。

    为什么要脱离终端?

      如果它不脱离终端,那么就有可能收到来自终端的信号,比如SIGINT(Ctrl+c,会被发往所有前台进程组的进程,它的默认行为就是结束进程),SIGHUP(会被发往会话首进程)。

    为什么要关闭它打开的所有文件描述符?

      如果创建它的进程之前打开了某个文件,然后创建这个守护进程,这样子进程就继承了fd,如果守护进程不关闭这个fd,一个是会占用资源,二个我猜测和改变工作目录一样,如果这个文件是位于挂载目录,那么就无法umount了。

    为什么要清掩码?

      这是因为假设它的父进程之前对掩码做过特殊设置,守护进程作为子进程会继承这个,那么它创建文件时,因为掩码的缘故,文件的权限就可能和实际设置的不一致。

  第三个特征,守护进程通常由启动脚本启动

  

  来自APUE守护进程章节例子,将一个进程守护化的代码:

  -----

  或者使用Linux的现成函数,daemon。

最新文章

  1. SE Springer小组《Spring音乐播放器》软件需求说明3
  2. Android开发6:Service的使用(简单音乐播放器的实现)
  3. java常用的文件读写操作
  4. mysql在线修改表结构大数据表的风险与解决办法归纳
  5. 微信开发中遇到“当前页面的url未注册”问题
  6. apache 做http代理
  7. Linux下安装和设置memcache(转)
  8. 使用ASP.NET实现Windows Service定时执行任务
  9. list去重 转载
  10. [SVN]两个分支合并
  11. DPDK support for vhost-user
  12. 从数据库、代码和服务器对PHP网站Mysql做性能优化
  13. vue 2.0之基础
  14. Mybatis框架基础支持层——反射工具箱之泛型解析工具TypeParameterResolver(4)
  15. 304. Range Sum Query 2D - Immutable(动态规划)
  16. Zookeeper学习笔记1
  17. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
  18. 04 Zabbix4.0系统配置触发器trigger
  19. vue.js组件(component)
  20. amazon interview

热门文章

  1. JQuery文件上传插件ajaxFileUpload在Asp.net MVC中的使用
  2. Nancy之结合TinyFox调试备忘
  3. 基于<MediaElement>的WPF视频播放器(终章)【3】
  4. Visual Studio 2013 Unit Test Project App.config文件设置方法
  5. php设置手机访问浏览器版apache配置
  6. [修正] 移动平台曲线不平滑的问题(如:TRectangle, TPath...等)
  7. easyui datagrid 动态操作editor 的方法
  8. linux 下 systemd-udevd 服务解析
  9. No.007:Reverse Integer
  10. AngularJS学习笔记(1) - AngularJS入门