简单的守护进程

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <signal.h>
#define MAXFILE 65535 线程

void sigterm_handler(int arg) 进程

{ string

  _running = 0; it

} io

 

int main() class

{ 终端

    pid_t pc; 权限

    int i, fd,len; grep

    char* buf = “My dameon\n”; 程序

    len = strlen(buf);

    pc = fork();//建立子线程

    if(pc<0)

    {

        printf("error fork\n");

        exit(1);

    }    

    else if (pc >0)

      exit(0);

  //让进城摆脱原会话的控制

  //让进程摆脱原进程组的控制

   //让进程摆脱原控制终端的控制

    setsid();//    

    umask(0);//重置文件权限掩码

    for(i=0;i<MAXFILE;i++);

        close(i);

    signal(SIGTERM,sigterm_handler);

    while(_running)

    {

       if((fd=open("/tmp/dameon.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0)

        {

      perror("open");

      exit(1);

        }

       write(fd,buf,len);

  close(fd);

  usleep(10*1000); //10毫秒

}

 

此程序每10毫秒将buf写入文件

关闭时 用ps -ef|grep 得到进程号 而后 kill 

相关文章
相关标签/搜索