多进程——守护进程例子

Posted lanbofei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多进程——守护进程例子相关的知识,希望对你有一定的参考价值。

要求,创建守护进程,每隔两秒向文件daemon.txt中写入当前时间

 

 1 #include"my.h"
 2 #include<stdio.h>
 3 #include<time.h>
 4 #include<string.h>
 5 #include<fcntl.h>
 6 #include<sys/stat.h>
 7 
 8 int main(){
 9 
10     pid_t pid;
11     int i,fd;
12     //char *buf="this is daemon
";
13     char buf[128]={0};
14     time_t t;
15 
16     pid=fork();
17     if(pid<0){
18     
19         perror("fork error");
20         exit(1);
21     }
22     else if(pid>0){
23     
24         
25     //printf("#######################");
26         exit(0);
27     }
28     printf("#######################");
29     setsid();
30     chdir("/tmp");
31     umask(0);
32     for(i=0;i<getdtablesize();i++){
33     
34         close(i);
35     }
36     while(1){
37     
38         if((fd=open("daemon.txt",O_CREAT|O_WRONLY|O_TRUNC,0600))<0){
39         
40             perror("open file error
");
41             exit(1);
42         }
43 
44         time(&t);
45         sprintf(buf,"time=%s",ctime(&t));
46         write(fd,buf,strlen(buf));
47         close(fd);
48         sleep(3);
49     }
50     exit(0);
51 }

 

 

技术分享图片

 

错误分析:

(1)缺少头文件sys/wait.h  导致umask()报错;

(2)创建daemon.txt是路径缺省,本来以为是在和daemon.c一个文件夹错误,是在第三部chdir()创建的工作目录/tmp下。

(3)printf("############"), 不会显示的原因,已经脱离当前中断所以不会显示

以上是关于多进程——守护进程例子的主要内容,如果未能解决你的问题,请参考以下文章

多进程之守护进程与互斥锁

多进程(了解),守护进程,互斥锁,信号量,进程Queue与线程queue

Python多进程的Join和daemon(守护)的用法

python基础-守护进程守护线程守护非守护并行

python 并发编程 多线程 守护线程

7.3.4 - 并发多线程 守护线程