Chinaunix首页 | 论坛 | 博客
  • 博客访问: 837041
  • 博文数量: 489
  • 博客积分: 475
  • 博客等级: 下士
  • 技术积分: 3087
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 16:28
文章分类

全部博文(489)

文章存档

2013年(7)

2012年(301)

2011年(181)

分类:

2011-12-22 21:54:18

原文地址:守护进程 作者:luozhiyong131

  1. /*
  2.  *    守户进程在系统启动时启动,系统关闭时终止
  3.  *    守户进程的创建方法
  4.  *    1.将子进程放入后台。终止父进程
  5.  *    2.在子进程中创建新会话。setsid()
  6.  *    3.关闭打开的文件描述符
  7.  *    4.改变工作目录
  8.  *    5.重设文件权限掩码
  9.  *    6.处理SIGCHLD信号signal(SIGCHLD, SIG_IGN)
  10.  *    Lzy    2011-6-14
  11.  */

  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <unistd.h>
  15. #include <signal.h>

  16. /*
  17.  *    创建守护进程,向某个文件周期性的写指定字符
  18.  */
  19. int main(void)
  20. {
  21.     int i;
  22.     pid_t pid;
  23.     FILE *fp;
  24.     
  25.     pid = fork();            //创建新进程
  26.     if(pid > 0)
  27.     {
  28.         exit(0);            //结束父进程
  29.     }
  30.     else if(pid == 0)
  31.     {
  32.         setsid();            //创建新会话        
  33.         for(i = 0; i < 1024; i++)
  34.             close(i);        //关闭打开的文件描述符
  35.             
  36.         chdir("/");            //改变工作目录
  37.         umask(0);            //重设文件权限掩码
  38.         signal(SIGCHLD, SIG_IGN);//处理SIGCHLD信号        
  39.         
  40.         while(1)
  41.         {
  42.             fp = fopen("/work/text", "a");        //打开文件
  43.             fputs("this is a Dameon.\n", fp);    //写入信息
  44.             sleep(1);                            //睡眠一秒
  45.             fclose(fp);
  46.         }        
  47.     }
  48.     return 0;
  49. }
  1. /*
  2.  *    守户进程在系统启动时启动,系统关闭时终止
  3.  *    守户进程的输出
  4.  *    syslog(int priority, char *format)
  5.  *    Lzy    2011-6-14
  6.  */

  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include <signal.h>
  11. #include <syslog.h>
  12. #include <time.h>

  13. /*
  14.  *    创建守护进程,向某个文件周期性的写指定字符
  15.  */
  16. int main(void)
  17. {
  18.     int i;
  19.     pid_t pid;    
  20.     time_t now;
  21.     
  22.     pid = fork();            //创建新进程
  23.     if(pid > 0)
  24.     {
  25.         exit(0);            //结束父进程
  26.     }
  27.     else if(pid == 0)
  28.     {
  29.         setsid();            //创建新会话        
  30.         for(i = 0; i < 1024; i++)
  31.             close(i);        //关闭打开的文件描述符
  32.             
  33.         chdir("/");            //改变工作目录
  34.         umask(0);            //重设文件权限掩码
  35.         signal(SIGCHLD, SIG_IGN);//处理SIGCHLD信号        
  36.         syslog(LOG_USER | LOG_INFO, "Daemon test");            //写入至/var/log/messages文件中
  37.         
  38.         while(1)
  39.         {
  40.             time(&now);
  41.             syslog(LOG_USER | LOG_INFO, "Current time:\t%s\n",ctime(&now));    
  42.             sleep(1);                            //睡眠一秒
  43.             
  44.         }        
  45.     }
  46.     return 0;
  47. }

tail /var/log/messages 查看文件信息

阅读(556) | 评论(0) | 转发(0) |
0

上一篇:内存映射实现快速排序

下一篇:队列

给主人留下些什么吧!~~