zoukankan      html  css  js  c++  java
  • 多进程——守护进程例子

    要求,创建守护进程,每隔两秒向文件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("############"), 不会显示的原因,已经脱离当前中断所以不会显示

  • 相关阅读:
    Android学习笔记(四十):Preference的使用
    java反射中Method类invoke方法的使用方法
    accept函数
    C++教程之lambda表达式一
    《windows核心编程系列》十八谈谈windows钩子
    STL学习小结
    RS-232协议和RS-485协议
    选择排序
    在asp.net mvc中使用PartialView返回部分HTML段
    uva 10560
  • 原文地址:https://www.cnblogs.com/lanbofei/p/9575410.html
Copyright © 2011-2022 走看看