定义: 守护进程 daemon 是在后台运行不受终端控制的进程。

启动方法:

1.        很多守护进程是系统初始化脚本启动的,一般在/etc目录或者/etc/rc开头的目录

2.        很多网络服务器是由inetd超级服务器启动的

3.        cron守护进程按规定的时间启动某个程序,可以把你的程序定个时间由他启动

4.        at命令制定某一时刻启动某个进程

5.        也可以在用户终端启动,一般在测试守护进程或者守护进程需要重启时使用

由于守护进程没有控制终端,所以他不能打印到终端上,当出现错误时,需要记录下来,就用到了下面这个函数;

<syslog.h>

void syslog(int priority, const char *message, …..)

priority是级别(level)和设施(facility)的组合,可以查看相关文档查找level , facility

(见《unix 网络编程 第一卷》)

void openlog(const char *ient, int options, int facility)

void closelog(void)

用于开启和关闭log的发送

发送消息的位置为:/var/run/log (/dev/log)

路径名/dev/klog 内核中的所有出错信息作为这个设备的输入实现

怎样才能产生一个守护进程呢?

1.       首先调用fork,然后父进程终止,子进程继续运行。子进程继承了父进程的进程组号,但拥有自己的进程号,保证其不是一个进程组头

2.       setsid 函数,创建一个session,(具体参见《unix环境高级编程》第九章),此时这个进程变成了新会话头,和新进程组的组长,不在控制终端

3.       忽略SIGHUP信号再次fork, 这次函数返回的是第二次生成子进程,第一次的子进程是他的父进程,并且也终止了

第三步为了保证进程不再拥有终端

inetd 守护进程

我们在网络编程时会发现,开始的几步都是基本一样的,对于服务器这一端,我们会使用socket, bind, listen ,accept 基本步骤相同,能不能把这几步形成一个总的,当有申请链接来时都调用一个进程链接,然后根据不同的申请fork子进程执行相应的程序呢?答案就是只用inetd守护进程。

inetd守护进程是Linux自己的,他作为一个守护进程,处理请求,我们要做的是给他提供当对于某种链接,某个接口的请求时所要启动的程序就可以了。

一般在/etc/inetd.conf中配置。

例如:

ftp   stream     tcp   nowait     root        /usr/bin/ftpd    ftpd –l

下面是针对上面的参数进行解释,一一对应。

service-name    必须是在/etc/services文件中已定义的服务名

socket-tye    stream(TCP)或dgram(UDP)

protocol      不许再/etc/protocols文件中已定义:tcp或者UDP

wait-flag      一般TCP是nowait,UDP是wait

login-name     /etc/passwd 中的用户名,一般为root

server-program exec使用的全路径名

server-program-arguments exec使用的参数

不过应当注意的是最近版本好像不使用这个方法了,而是使用xinetd.*的方式,也有一定的格式,

转载于:https://www.cnblogs.com/demonspider/archive/2012/11/25/2787176.html

守护进程和inetd(转)相关推荐

  1. 守护进程和inetd超级服务器

    守护进程是在后台运行且不与任何控制终端关联的进程.既然守护进程没有控制终端,当有事情发生时,它们得有输出消息的某种方法,syslog函数是输出这些消息的标准方法,它把这些消息发送给syslogd守护进 ...

  2. 守护进程和inetd守护进程

    一.守护进程介绍 守护进程是在后台运行且不与任何控制终端相关联的进程.通常由系统初始化脚本启动,当然也可以在shell提示符下用命令行启动,不过这种守护进程必须亲自脱离于控制终端的关联. 守护进程的启 ...

  3. python中的daemon守护进程实现方法

    守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止. 守护进程的特性 1.在后台运行 2.与其运行前的环境 ...

  4. Python实例浅谈之五Python守护进程和脚本单例运行

    一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc ...

  5. Linux系统守护进程详解

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

  6. python3 编写守护进程程序思路

    1. fork子进程,父进程退出 通常,我们执行服务端程序的时候都会通过终端连接到服务器,成功连接后会加载shell环境,终端和shell都是进程,shell进程是终端进程的子进程,通过ps命令可以很 ...

  7. 守护进程的创建方法和步骤

    概念:      守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.Linux的大多数服务器就是用守护进 ...

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

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

  9. linux中Daemon守护进程编程

    守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系统引导装入时启动, ...

最新文章

  1. tcpdump移植和使用
  2. 大数据 清华 覃征_调剂到清华读研?不想去!清华大学大数据调剂生放弃录取!...
  3. 女性走夜路不安全?英国奇葩新招:无人机护航,关键时刻用光吓退张三
  4. Flask 数据迁移 报错 Table 'xxx' is already defined for this MetaData instance
  5. zabbix_agent安装(Centos+Ubuntu)
  6. Apk去签名校验详解
  7. RobotFramework读取mysql和oracle数据库
  8. sparklines插件_21个实用的Javascript数据图表插件
  9. Python外(4)-读写mat文件
  10. ajax datatype_Ajax的基本使用
  11. 武汉理工大学计算机学院2018复试,武汉理工大学2018年自主招生复试揭秘
  12. exit()函数_complete函数
  13. nhibernate事务锁表的问题
  14. Laravel服务容器
  15. 也谈zabbix性能优化
  16. MySQL 8.0.28 忘记密码,重置密码
  17. USB转串口那些事儿—串口驱动类型
  18. Linux下音乐播放器的实现
  19. 计算机慢怎么解决6,电脑运行速度慢怎么回事 电脑运行速度慢的解决方法
  20. pairing-friendly曲线家族

热门文章

  1. 升级鸿蒙系统的手机名单,倒计时2天!首批鸿蒙OS适配名单确定,你的手机在列吗?...
  2. 计算机学院的运动会介绍,敢于拼搏 超越自我 --计算机学院校运动会动员大会召开...
  3. phpnow升级mysql版本_PHPnow 升级后 PHP不支持GD、MySQL 枫
  4. 测试用例设计怎么做?怎么设计一个好的测试用例?
  5. JVM中对象如何在堆内存分配
  6. 040_Tooltip文字提示
  7. 学生兴趣爱好管理系统 c语言,《学生兴趣爱好系统.doc
  8. python手机app 授权登录_Appium+unittest+python登录app
  9. 方差分析中怎么看有无显著性影响_用R语言做单因素方差分析及多重比较
  10. js里面字符数字和数字相加_「译」5 个奇怪的只会在 JS 里才发生的趣事