Chinaunix首页 | 论坛 | 博客
  • 博客访问: 338733
  • 博文数量: 45
  • 博客积分: 669
  • 博客等级: 上士
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-27 17:59
文章分类
文章存档

2015年(5)

2014年(6)

2013年(4)

2012年(30)

分类: LINUX

2012-07-19 19:07:11

守护进程(daemon)又称精灵进程,系统启动运行一直到系统结束,终端 ps -e 命令后,看到的以d字母结尾的进程一般为守护进程,如(xinted等)。守护进程以超级用户权限运行。
其创建过程步骤及实例如下:

点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<fcntl.h>
  5. #include<sys/types.h>
  6. #include<unistd.h>
  7. #include<sys/wait.h>

  8. int main()
  9. {
  10.  pid_t pid;
  11.  int sid;
  12.  int fd;
  13.  char *buf="This is a daemon process\n";
  14.  
  15.  pid=fork(); //第一步 创建父子进程
  16.  
  17.  if(pid<0)
  18.  {
  19.   printf("fork failed");
  20.  }
  21.  if(pid>0) //父进程退出,由init 进程领养子进程
  22.  {
  23.   exit(0);
  24.  }
  25.  
  26.  if(pid==0)
  27.  {
  28.   setsid(); //第二步 脱离原来进程组和会话组
  29.   
  30.   chdir("/"); // 第三部切换到根目录,避免文件系统变动影响守护进程
  31.   umask(0); // 第四步 重设文件权限
  32.   //第五步 关闭文件描述符
  33.    //守护进程创建结束,下面即可开始守护进程的工作
  34.   fd=open("/tmp/daemon.log",
  35.                     O_CREAT|O_WRONLY|O_APPEND,0600);
  36.          if(fd<0)
  37.          {
  38.          perror("open file error:");
  39.     }
  40.   while(1)
  41.   {
  42.    
  43.    write(fd,buf,strlen(buf)+1);
  44.    sleep(10);
  45.   }
  46.   close(fd);
  47.  }
  48.  exit(0);
  49. }


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