linux 守护进程 编码

1.守护进程:  运行时间较长,一般在后台运行,关闭了启动它的终端,也不会结束该程序。
  打开一个终端就和内核建立了一个会话。 

 2.会话首进程 : 在该会话中运行的第一个进程叫做会话首进程,用会话首进程的pid来标识会话。直到终端退出,会话结束。

 3.组长进程 :进程的pid和组号相同。

守护进程编程流程:

1.fork()产生子进程,退出父进程;

2.在当前进程中执行setsid();//创建一个新的会话,当前进程脱离原来的会话;

3.fork()产生子进程,退出父进程;(可有可无)

4.chdir("/") 修改工作目录到根目录;

5.umask(0)设置掩码;

6.close()关闭所有文件描述符;

具体代码实现如下:

 #include<stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
  #include <sys/types.h>
   int main(){
   pid_t pid = fork();
   if(pid != 0){
     exit(0);
  }
 setsid();
  pid = fork();
  if(pid != 0){
     exit(0);
  } 
  chdir("/");
  umask(0);
  int i =0;
 for(;i<getdtablesize();i++){
      close(i);
  }
      while(1){
          FILE* fp = fopen("/tmp/testd.log","a");
          if(fp == NULL){
             break;
          } 
        time_t tv; 
         time(&tv);
         fprintf(fp,"CURR time:%s",asctime(localtime(&tv)));
         fclose(fp);
         sleep(5);
     }                                                                                                                               
                                                                                                                     

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值