精华内容
下载资源
问答
  • linuxDaemon守护进程编程

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

    http://www.cnblogs.com/hnrainll/archive/2011/09/06/2168792.html

    守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。

          一般情况下守护进程可以通过以下几种方式产生:

    1,在系统启动的时候由启动脚本启动,这些启动脚本通常放在/etc/rc.d目录下

    2,利用inetd超级系统服务器启动,如telnet等

    3,由cron定时启动以及在终端用nohup启动的进程也是守护进程  

         由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。

    守护进程的变成要点:
    1. 屏蔽一些有关控制终端操作的信号
       这是为了防止在守护进程还没有运行之前,控制终端收到干扰退出或者挂起
    signal(SIGTTOU,SIG_IGN);
    signal(SIGTTIN,SIG_IGN);
    signal(SIGTSTP,SIG_IGN);
    signal(SIGHUP,SIG_IGN);
    2. 在后台运行。

      为避免挂起控制终端而将Daemon放入后台执行。方法是在进程中调用fork使父进程终止,让Daemon在子进程中后台执行。

          if(pid=fork())
              exit(0);//是父进程,结束父进程,子进程继续
    3. 脱离控制终端,登录会话和进程组
          进程属于一个进程组,进程组号(GID)就是进程组长的进程号(PID)。登录会话可以包含多个进程组。这些进程组共享一个控制终端。这个控制终端通常是创建进程的登录终端。控制终端,登录会话和进程组通常是从父进程继承下来的。我们的目的就是要摆脱它们,使之不受它们的影响。方法是在第1点的基础上,调用setsid()使进程成为会话组长:
        setsid()
    4. 关闭打开的文件描述符

      进程从创建它的父进程那里继承了打开的文件描述符。如不关闭,将会浪费系统资源,造成进程所在的文件系统无法卸下以及引起无法预料的错误。按如下方法关闭它们:

      #define   NOFILE   256  ;//不同系统中不同数值
      for(i=0;i<NOFILE;i++)
             colse(i);
    5. 改变当前工作目录
         进程活动时,其工作目录所在的文件系统不能卸下。一般需要将工作目录改变到根目录。对于需要转储核心,写运行日志的进程将工作目录改变到特定目录如/tmpchdir("/")
       chdir("/");
    6. 重设文件创建掩模
        进程从创建它的父进程那里继承了文件创建掩模。它可能修改守护进程所创建的文件的存取位。为防止这一点,将文件创建掩模清除0:
       umask(0);
    7. 处理SIGCHLD(子进程退出信号)信号
       处理SIGCHLD信号并不是必须的。但对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结束,子进程 将成为僵尸进程(zombie)从而占用系统资源。如果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。在Linux下可以简单地 将SIGCHLD信号的操作设为SIG_IGN。

     signal(SIGCHLD,SIG_IGN);

    下面给出一个例程

    复制代码
    #include <stdio.h>
    #include
    <stdlib.h>
    #include
    <unistd.h>
    #include
    <signal.h>
    #include
    <fcntl.h>
    #include
    <sys/syslog.h>
    #include
    <sys/param.h>
    #include
    <sys/types.h>
    #include
    <sys/stat.h>
    #include
    <time.h>

    int init_daemon(const char *pname,int facility)
    {
    int pid;
    int i;
    /*忽略可能的终端信号*/
    signal(SIGTTOU,SIG_IGN);
    signal(SIGTTIN,SIG_IGN);
    signal(SIGTSTP,SIG_IGN);
    signal(SIGHUP,SIG_IGN);
    //创建子进程,父进程推出
    if( (pid=fork()))
    exit(EXIT_SUCCESS);
    //是父进程,结束父进程,子进程继续
    else if(pid < 0)
    {
    perror(
    "fork error!\n");
    exit(EXIT_FAILURE);
    }

    setsid();
    //设置新会话组长,脱离终端
    for(i=0;i<NOFILE;i++)
    close(i);

    open(
    "/dev/null",O_RDONLY);
    open(
    "/dev/null",O_RDWR);
    open(
    "/dev/null",O_RDWR);

    chdir(
    "/");
    umask(
    0);
    signal(SIGCHLD,SIG_IGN);

    openlog(pname,LOG_PID,facility);

    return 0;
    }

    int main(int argc,char *argv[])
    {
    time_t ticks;
    init_daemon(argv[
    0],LOG_KERN);
    while(1)
    {
    sleep(
    1);
    ticks
    = time(NULL); //读取当前时间
    syslog(LOG_INFO,"%s",asctime(localtime(&ticks)));//写日志信息
    }

    return 0;
    }
    复制代码


    运行之后,使用                       tail -n 1   /var/log/message

    就可以查看到日志信息了。

    展开全文
  • LinuxDaemon的实现

    2014-02-14 23:41:52
    注:Linux下可以直接调用damon函数来实现daemon进程,没必要重新实现,理解其原理即可。 在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下 int daemon ( int __nochdir, int __noclose) ...

    注:Linux下可以直接调用damon函数来实现daemon进程,没必要重新实现,理解其原理即可。

    在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下

    int daemon ( int __nochdir, int __noclose) ; 
    
    

    如果__nochdir的值为0,则将切换工作目录为根目录;如果__noclose为0,则将标准输入,输出和标准错误都重定向到/dev /null。

    经过这个函数调用后的程序将运行在后台,成为一个daemon程序,而linux下大多的服务都是以此方式运行的。

    我们来看一个简单的例子。例如编写例子程序test.c

    #include <unistd.h> 
    #include <stdio.h> 
     
    int do_sth( ) 
    { 
     //Add what u want 
     return 0 ; 
    } 
    int main( ) 
    { 
     daemon( 0 , 0 ) ; 
     while ( 1 ) 
     { 
       do_sth( ) ; 
       sleep( 1 ) ; 
     } 
    } 
    
    

    编译并运行

    [ leconte@ localhost daemon] $ gcc -o test test.c
    [ leconte@ localhost daemon] $ ./ test 
    
    

    程序进入了后台,通过ps查看进程情况,可以看到进程的父进程id为1,即init进程

    用lsof查看test进程所打开的文件,可以看到文件描述符0,1,2都被重定向到/dev/null

    并且能够看到,进程的当前工作目录(cwd)为根目录/,daemon函数已经帮我们完成了daemon化的过程,接下来我们只需要关注于程序功能的实现了。

     

    Linux 守护进程

    Linux 守护进程概述

    Linux Daemon (守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。 Linux 系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程 syslogd 、 web 服务器 httpd 、邮件服务器 sendmail 和数据库服务器 mysqld 等。
     
    守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程经常以超级用户( root )权限运行,因为它们要使用特殊的端口( 1-1024 )或访问某些特殊的资源。
     
    一个守护进程的父进程是 init 进程,因为它真正的父进程在 fork 出子进程后就先于子进程 exit 退出了,所以它是一个由 init 继承的孤儿进程。守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备 stdout 还是标准出错设备 stderr 的输出都需要特殊处理。
     
    工作原理
    Linux 守护进程的工作模式是服务器 / 客户机( Server/Client ),服务器在一个特定的端口上监听( Listen )等待客户连接,连接成功后服务器和客户端通过端口进行数据通信。守护进程的工作就是打开一个端口,并且监听( Listen )等待客户连接。如果客户端产生一个连接请求,守护进程就创建( Fork )一个子服务器响应这个连接,而主服务器继续监听其他的服务请求。

    参考文章: http://www.cnblogs.com/xuxm2007/archive/2011/07/29/2121280.html
    展开全文
  • linux实现daemon程序

    千次阅读 2012-07-12 20:40:06
    http://linux.chinaitlab.com/c/798692.html 注:SIGTERM 程序结束(terminate)信号,与SIGKILL不同的是该信号...编写Linux系统下Daemon程序的方法步骤  一、引言 Daemon程序是一直运行的服务端程序,又称为守护进程。

    http://linux.chinaitlab.com/c/798692.html

    注:SIGTERM 程序结束(terminate)信号,与SIGKILL不同的是该信号可以被阻塞和处理通常用来要求程序自己正常退出. shell命令kill缺省产生这个信号. 

     

    编写Linux系统下Daemon程序的方法步骤

      一、引言 Daemon程序是一直运行的服务端程序,又称为守护进程。

      本文介绍了在Linux下编写Daemon程序的步骤,并给出了例子程序。

      二、Daemon程序简介 Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我们也把运行的Daemon程序称作守护进程。

      三、Daemon程序编写规则

      编写Daemon程序有一些基本的规则,以避免不必要的麻烦。

      1、首先是程序运行后调用fork,并让父进程退出。子进程获得一个新的进程ID,但继承了父进程的进程组ID。

      2、调用setsid创建一个新的session,使自己成为新session和新进程组的leader,并使进程没有控制终端(tty)。

      3、改变当前工作目录至根目录,以免影响可加载文件系统。或者也可以改变到某些特定的目录。

      4、设置文件创建mask为0,避免创建文件时权限的影响。

      5、关闭不需要的打开文件描述符。因为Daemon程序在后台执行,不需要于终端交互,通常就关闭STDIN、STDOUT和STDERR。其它根据实际情况处理。

      另一个问题是Daemon程序不能和终端交互,也就无法使用printf方法输出信息了。我们可以使用syslog机制来实现信息的输出,方便程序的调试。在使用syslog前需要首先启动syslogd程序,关于syslogd程序的使用请参考它的man page,或相关文档,我们就不在这里讨论了。

      四、一个Daemon程序的例子 编译运行环境为Redhat Linux 8.0。

      我们新建一个daemontest.c程序,文件内容如下:

      #include <unistd.h>

      #include <sys/types.h>

      #include <sys/stat.h>

      #include <stdlib.h>

      #include <stdio.h>

      #include <syslog.h>

      #include <signal.h>

      int daemon_init(void)

      { pid_t pid;

      if((pid = fork()) < 0)return(-1);

      else if(pid != 0) exit(0); /* parentexit */

      /* child continues */

      setsid(); /* become session leader*/

      chdir("/"); /* changeworking directory */

      umask(0); /* clear file modecreation mask */

      close(0); /* close stdin */

      close(1); /* close stdout */

      close(2); /* close stderr */

      return(0); }

      void sig_term(int signo)

      { if(signo == SIGTERM)

      /* catched signal sent by kill(1)command */

      { syslog(LOG_INFO, "programterminated.");

      closelog(); exit(0); }

      }

      int main(void)

      { if(daemon_init() == -1)

      { printf("can't forkself\n"); exit(0); }

      openlog("daemontest",LOG_PID, LOG_USER);

      syslog(LOG_INFO, "programstarted.");

      signal(SIGTERM, sig_term); /*arrange to catch the signal */

      while(1) { sleep(1); /* put yourmain program here */ }

      return(0); }

      使用如下命令编译该程序: gcc -Wall -o daemontestdaemontest.c编译完成后生成名为daemontest的程序,执行./daemontest来测试程序的运行。

      使用ps axj命令可以显示系统中已运行的daemon程序的信息,包括进程ID、session ID、控制终端等内容。

      部分显示内容:

      PPID PID PGID SID TTY TPGID STATUID TIME COMMAND

      1098 1101 1101 1074 pts/1 1101 S 00:00 -bash 1 1581 777 777 ? -1 S 500 0:13 gedit 1 1650 1650 1650 ? -1 S 5000:00 ./daemontest 794 1654 1654 794 pts/0 1654 R 500 0:00

      ps axj 从中可以看到daemontest程序运行的进程号为1650。

      我们再来看看/var/log/messages文件中的信息: Apr 7 22:00:32 localhost

      daemontest[1650]: program started.

      显示了我们在程序中希望输出的信息。

      我们再使用kill 1650命令来杀死这个进程,/var/log/messages文件中就会有如下的信息:

      Apr 7 22:11:10 localhostdaemontest[1650]: program terminated.

      使用ps axj命令检查,发现系统中daemontest进程已经没有了。

      五、参考资料

      Advanced Programming in the UNIXEnvironment W.Richard Stevens

      http://zhiwei.li/text/tag/daemon/

      <ahref="http://www.chinese%3Ca%20class%3D/"channel_keylink"="" target="_blank" style="margin-top:0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px;padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-wrap:break-word; text-decoration: none; color: rgb(51, 51, 51);">linuxuniversity.net/articles/2153.shtml">http://www.chineselinuxuniversity.net/articles/2153.shtml

      使用 Zope3 技术建立 Python 服务(Unix 版本)

      http://eishn.blog.163.com/blog/static/65231820069310828642/

      daemon.py: daemonize function forPython

      http://www.clapper.org/software/python/daemon/#Installation

      机房监控之Python变daemon守护进程

      http://www.linuxboy.net/wordpress2/2009/05/26/288.html

      Python Daemon(守护进程)

      http://hi.baidu.com/sunorr/blog/item/ef42c1f86dcc1c09d9f9fde9.html

      http://snippets.dzone.com/posts/show/1532

      (翻译)Python标准库的threading.Thread类

      http://www.cppblog.com/len/archive/2008/06/24/54472.html

      python多线程程序的中断(信号)处理

      http://www.162cm.com/archives/904.html

      以daemon方式运行一个程序

      http://bbs3.chinaunix.net/thread-1073255-1-1.html

      ==============

      用 Python写 daemon

      http://blog.csdn.net/snleo/archive/2008/12/24/3592275.aspx

      http://www.linuxforum.net/forum/showflat.php?Board=python&Number=380279

      http://blog.chinaunix.net/u/5547/showart_1213999.html

      http://bbs2.chinaunix.net/thread-1275803-1-1.html

      [转][Python一招鲜系列] 守护进程一招鲜

      http://blog.163.com/sea_haitao/blog/static/7756216200921023932171/

      http://www.kekeyu.com/database/open_2050607696.html

      http://qingfengxiyu.spaces.live.com/blog/cns!E5F7A3AEF9B09ED!222.entry

      python 非阻塞读数据

      http://www.mangbar.com/task/docview/5d023b211427315f01142a701a150335

     

    展开全文
  • linux daemon

    2013-07-15 09:35:04
    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet...
    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。
    

    守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同,造成不同 Unix环境下守护进程的编程规则并不一致。需要注意,照搬某些书上的规则(特别是BSD4.3和低版本的System V)到Linux会出现错误的。下面将给出Linux下守护进程的编程要点和详细实例。

    一. 守护进程及其特性

    守护进程最重要的特性是后台运行。在这一点上DOS下的常驻内存程序TSR与之相似。其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。最后,守护进程的启动方式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,可以由作业规划进程crond启动,还可以由用户终端(通常是 shell)执行。
    总之,除开这些特殊性以外,守护进程与普通进程基本上没有什么区别。因此,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程。如果对进程有比较深入的认识就更容易理解和编程了。

    二. 守护进程的编程要点

    前面讲过,不同Unix环境下守护进程的编程规则并不一致。所幸的是守护进程的编程原则其实都一样,区别在于具体的实现细节不同。这个原则就是要满足守护进程的特性。同时,Linux是基于Syetem V的SVR4并遵循Posix标准,实现起来与BSD4相比更方便。编程要点如下;

    1. 在后台运行。
    为避免挂起控制终端将Daemon放入后台执行。方法是在进程中调用fork使父进程终止,让Daemon在子进程中后台执行。
    if(pid=fork())
    exit(0);//是父进程,结束父进程,子进程继续

    2. 脱离控制终端,登录会话和进程组
    有必要先介绍一下Linux中的进程与控制终端,登录会话和进程组之间的关系:进程属于一个进程组,进程组号(GID)就是进程组长的进程号(PID)。登录会话可以包含多个进程组。这些进程组共享一个控制终端。这个控制终端通常是创建进程的登录终端。
    控制终端,登录会话和进程组通常是从父进程继承下来的。我们的目的就是要摆脱它们,使之不受它们的影响。方法是在第1点的基础上,调用setsid()使进程成为会话组长:
    setsid();
    说明:当进程是会话组长时setsid()调用失败。但第一点已经保证进程不是会话组长。setsid()调用成功后,进程成为新的会话组长和新的进程组长,并与原来的登录会话和进程组脱离。由于会话过程对控制终端的独占性,进程同时与控制终端脱离。

    3. 禁止进程重新打开控制终端
    现在,进程已经成为无终端的会话组长。但它可以重新申请打开一个控制终端。可以通过使进程不再成为会话组长来禁止进程重新打开控制终端:

    if(pid=fork())
    exit(0);//结束第一子进程,第二子进程继续(第二子进程不再是会话组长)

    4. 关闭打开的文件描述符
    进程从创建它的父进程那里继承了打开的文件描述符。如不关闭,将会浪费系统资源,造成进程所在的文件系统无法卸下以及引起无法预料的错误。按如下方法关闭它们:
    for(i=0;i 关闭打开的文件描述符close(i);>

    5. 改变当前工作目录
    进程活动时,其工作目录所在的文件系统不能卸下。一般需要将工作目录改变到根目录。对于需要转储核心,写运行日志的进程将工作目录改变到特定目录如/tmpchdir("/")

    6. 重设文件创建掩模
    进程从创建它的父进程那里继承了文件创建掩模。它可能修改守护进程所创建的文件的存取位。为防止这一点,将文件创建掩模清除:umask(0);

    7. 处理SIGCHLD信号
    处理SIGCHLD信号并不是必须的。但对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结束,子进程将成为僵尸进程(zombie)从而占用系统资源。如果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。在Linux下可以简单地将 SIGCHLD信号的操作设为SIG_IGN。
    signal(SIGCHLD,SIG_IGN);
    这样,内核在子进程结束时不会产生僵尸进程。这一点与BSD4不同,BSD4下必须显式等待子进程结束才能释放僵尸进程。

    三. 守护进程实例

    守护进程实例包括两部分:主程序test.c和初始化程序init.c。主程序每隔一分钟向/tmp目录中的日志test.log报告运行状态。初始化程序中的init_daemon函数负责生成守护进程。读者可以利用init_daemon函数生成自己的守护进程。

    1. init.c清单

    #include < unistd.h >
    #include < signal.h >
    #include < sys/param.h >
    #include < sys/types.h >
    #include < sys/stat.h >
    void init_daemon(void)
    {
    int pid;
    int i;
    if(pid=fork())
    exit(0);//是父进程,结束父进程
    else if(pid< 0)
    exit(1);//fork失败,退出
    //是第一子进程,后台继续执行
    setsid();//第一子进程成为新的会话组长和进程组长
    //并与控制终端分离
    if(pid=fork())
    exit(0);//是第一子进程,结束第一子进程
    else if(pid< 0)
    exit(1);//fork失败,退出
    //是第二子进程,继续
    //第二子进程不再是会话组长

    for(i=0;i< NOFILE;++i)//关闭打开的文件描述符
    close(i);
    chdir("/tmp");//改变工作目录到/tmp
    umask(0);//重设文件创建掩模
    return;
    }

    2. test.c清单
    #include < stdio.h >
    #include < time.h >

    void init_daemon(void);//守护进程初始化函数

    main()
    {
    FILE *fp;
    time_t t;
    init_daemon();//初始化为Daemon

    while(1)//每隔一分钟向test.log报告运行状态
    {
    sleep(60);//睡眠一分钟
    if((fp=fopen("test.log","a")) >=0)
    {
    t=time(0);
    fprintf(fp,"Im here at %sn",asctime(localtime(&t)) );
    fclose(fp);
    }
    }
    }
    以上程序在RedHat Linux6.0下编译通过。步骤如下:
    编译:gcc -g -o test init.c test.c
    执行:./test
    查看进程:ps -ef
    从输出可以发现test守护进程的各种特性满足上面的要求。
    展开全文
  • linux Daemon程序详解

    千次阅读 2018-09-18 11:03:05
    Daemon程序是什么? Daemon程序,又称为守护进程,通常在系统后台长时间运行,由于没有控制...Daemon程序一般作为系统服务使用,Linux系统中运行着很多这样的守护进程,如iptables,nfs,ypbind,dhcpd等。 Daemo...
  • linuxDaemon进程

    千次阅读 2007-06-25 18:28:00
    Linux服务器开发初步 陈晴阳 服 务器开发需要考虑的内容很多,比如服务器的架构、稳定性、性能以及负载能力等等。事实上,在开发服务器的过程中,需要综合考虑各种因素,比如就客户端连接 时间较短却又比较频繁的...
  • linux daemon代码注释,参考《unix环境高级编程》
  • Linux中启动的后台Daemon因为没有tty与其相连,所以printf()或fprintf(stdout, .......)都没有地方可以显示。那么要在后台daemon中输出些message有什么方法呢? 可以使用syslog()函数,syslogd将会把message打印到...
  • Linuxdaemon()函数的使用

    千次阅读 2016-04-12 23:43:05
    int daemon(int nochdir, int noclose); 参数: nochdir:当此参数为0时,会更改创建出的danmon的执行目录为根目录,否则(非0)时保持当前执行目录不变。 noclose:当次函数为0时,会将标准输入(0),标准输出(1),...
  • linux daemon例子

    千次阅读 2013-07-12 14:41:48
    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet...
  • Unix/Linux中的daemon进程类似于Windows中的后台服务进程,例如http服务进程nginx,ssh服务进程sshd等。 ps -axj 命令打印系统中各进程的状态。 选择项- a显示由其他用户所拥有的进程的状态。 -x显示没有控制终端的...
  • LINUX Daemon程序设计

    千次阅读 2008-03-21 23:56:00
    LINUX Daemon 程序设计 刘爱贵 Aigui.LIU@ihep.ac.cn 2006-11-2 引言 Daemon 程序,又称为守护进程,通常在系统后台长时间运行,由于没有控制终端而无法与前台交互。 Daemon 程序一般作为系统服务...
  • Linux Daemon的编写

    2013-11-30 00:40:43
    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet...
  • 用lazarus开发Linuxdaemon程序及编写启动脚步   Linux Daemon程序简介 Linux Daemon程序(守护进程或精灵进程)是生存期较长的一种进程。它们常常在系统自举时启动,仅当系统关闭时才终止。所以它们没有控制终端,...
  • Linux 守护进程daemon

    千次阅读 2014-09-17 14:25:29
    Daemon程序简介   Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待...
  • Linux下C++ daemon

    千次阅读 2019-01-11 19:00:17
     一个Daemon程序的例子 编译运行环境为Redhat Linux 8.0。  我们新建一个daemontest.c程序,文件内容如下:   # include   # include   # include   # include   # include   # ...
  • Linux Daemon(守护进程)

    万次阅读 2012-09-19 13:29:10
    Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务...
  • linux下编写daemon程序步骤

    千次阅读 2011-07-30 21:52:41
    一、引言 Daemon程序是...本文介绍了在Linux下编写Daemon程序的步骤,并给出了例子程序。 二、Daemon程序简介 Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,
  • 编写Linux系统下Daemon程序的方法步骤

    千次阅读 2016-10-13 14:31:40
    本文介绍了在Linux下编写Daemon程序的步骤,并给出了例子程序。 二、Daemon程序简介 Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,...
  • Linux后台程序编写,Linux DaemonLinux守护进程范例,Linux守护进程例子,编写Linux守护进程
  • Linux下使用daemon函数编写后台程序

    千次阅读 2017-07-07 14:20:20
    以前我们在看《unix环境高级编程》的时候,有专门的整章详细介绍如何编写一个后台daemon程序(精灵...在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下 int daemon (int __nochdir, int __
  • 什么事D Daemon程序,又称为守护进程,通常在系统后台长时间运行,由于没有控制终端而...Daemon程序一般作为系统服务使用,Linux系统中运行着很多这样的守护进程,如iptables,nfs,ypbind,dhcpd等。 Daemon设计原则
  • linux 守护进程 daemon (1)

    千次阅读 2012-10-09 14:14:44
    Daemon程序简介   Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待...
  • Linux的Service/Daemon

    2011-10-14 16:15:58
    service(也称为daemon)表示后台运行的程序,一般随系统的启动自动地启动且在用户logoff后仍然能够继续运行。该daemon进程一般在启动后需要与父进程断开关系,并使进程没有控制终端(tty)。因为daemon程序在后台...
  • linux daemon进程为什么要fork 2次?

    千次阅读 2013-06-14 16:49:52
    daemon进程是后台守护进程,有时候也叫精灵进程(agent).linux 下server都是daemon进程。相信大部分开发人员都知道如何去写一个daemon进程。但是另一方面,大部分人不知道为什么要这么做,不少人是从某个地方copy一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,908
精华内容 24,763
关键字:

linux打开daemon

linux 订阅