Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56755
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 96
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-18 17:00
文章分类

全部博文(20)

文章存档

2017年(6)

2016年(14)

我的朋友

分类: C/C++

2016-06-01 17:10:25


点击(此处)折叠或打开

  1. #include<unistd.h>
  2. #include<signal.h>
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<sys/param.h>
  6. #include<sys/types.h>
  7. #include<sys/stat.h>
  8. #include<time.h>

  9. void init_daemon()
  10. {
  11. int pid;
  12. int i;
  13. pid=fork();
  14. if(pid<0)
  15.     exit(1); //创建错误,退出
  16. else if(pid>0) //父进程退出
  17.     exit(0);
  18.     
  19. setsid(); //使子进程成为组长
  20. pid=fork();
  21. if(pid>0)
  22.     exit(0); //再次退出,使进程不是组长,这样进程就不会打开控制终端
  23. else if(pid<0)
  24.     exit(1);

  25. //关闭进程打开的文件句柄
  26. for(i=0;i<NOFILE;i++)
  27.     close(i);
  28. chdir("/root/test"); //改变目录
  29. umask(0);//重设文件创建的掩码
  30. return;
  31. }

  32. void main()
  33. {
  34.     FILE *fp;
  35.     time_t t;
  36.     init_daemon();
  37.     while(1)
  38.     {
  39.         sleep(60); //等待一分钟再写入
  40.         fp=fopen("testfork2.log","a");
  41.         if(fp>=0)
  42.         {
  43.             time(&t);
  44.             fprintf(fp,"current time is:%s\n",asctime(localtime(&t))); //转换为本地时间输出
  45.             fclose(fp);
  46.         }
  47.     }
  48.     return;
  49. }

阅读(1729) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~