zoukankan      html  css  js  c++  java
  • 守护进程和inetd(转)

    定义: 守护进程 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      一般TCPnowait,UDPwait

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

    server-program exec使用的全路径名

    server-program-arguments exec使用的参数

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

  • 相关阅读:
    usaco 1.3.1 Mixing Milk
    ACM必备(学完一个就加亮一个)不多,就这些!
    usaco1.2.4Palindromic Squares
    usaco 1.2.3 Name That Number
    coursera机器学习笔记机器学习概论,梯度下降法
    coursera机器学习笔记多元线性回归,normal equation
    coursera机器学习支持向量机SVM
    使用C/C++,赋值运算时发生的转换
    coursera机器学习logistic回归,正则化
    coursera机器学习笔记神经网络,初识篇
  • 原文地址:https://www.cnblogs.com/demonspider/p/2787176.html
Copyright © 2011-2022 走看看