zoukankan      html  css  js  c++  java
  • Linux下创建守护进程的步骤

    1.fork出子进程,然后父进程退出

    2.更改会话

    3.更改工作目录

    4.更改umask

    5.关闭文件描述符

    下面我用一个简单的例子来说明。

    init.c

     1 #include <unistd.h>
     2 #include <signal.h>
     3 #include <sys/param.h>
     4 #include <sys/types.h>
     5 #include <sys/stat.h>
     6 
     7 void init_daemon(void){
     8     int pid;
     9     int i;
    10     if(pid = fork()){
    11         exit(0);
    12     }else if(pid < 0){
    13         exit(1);
    14     }
    15 
    16     setsid();
    17 
    18     if(pid = fork()){
    19         exit(0);
    20     }else if(pid < 0){
    21         exit(1);
    22     }
    23 
    24     for(i=0;i<NOFILE;++i){
    25         close(i);
    26     }
    27 
    28     chdir("/tmp");
    29     umask(0);
    30     return 0;
    31 }

    testDaemon.c

     1 #include <stdio.h>
     2 #include <time.h>
     3 
     4 void init_daemon(void);
     5 
     6 void main(){
     7     FILE *fp;
     8     time_t t;
     9     init_daemon();
    10     
    11     while(1){
    12         sleep(60);
    13         if((fp = fopen("test.log","a")) >= 0){
    14             t = time(0);
    15             fprintf(fp,"Im here at %s\n",asctime(localtime(&t)));
    16             fclose(fp);
    17         }
    18     }
    19 }

    然后用gcc编译成可执行文件就OK了。
    这个Daemon会定时的向文件中写入一条log

  • 相关阅读:
    Linux date自己实现代码
    Linux常用指令
    awk getline命令
    文档资料记录
    数学之美番外篇:平凡而又神奇的贝叶斯方法
    最小二乘法(ZZ)
    SpringMVC简单使用教程
    Oracle设置序列方法
    Bootstrap Table的使用详解
    Html中div块居中显示
  • 原文地址:https://www.cnblogs.com/javametro/p/3030099.html
Copyright © 2011-2022 走看看