Chinaunix首页 | 论坛 | 博客
  • 博客访问: 610126
  • 博文数量: 142
  • 博客积分: 116
  • 博客等级: 入伍新兵
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-28 08:37
文章分类

全部博文(142)

文章存档

2017年(7)

2016年(57)

2015年(48)

2014年(30)

我的朋友

分类: C/C++

2015-02-16 09:20:07


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

  8. void showProcess(char *title)
  9. {
  10.     printf("%s pid=%d, ppid=%d, getpgid=%d, getpgrp=%d, getsid=%d\n",
  11.             title, getpid(), getppid(), getpgid(getpid()), getpgrp(), getsid(0));
  12. }
  13. void lf_opensyslog()
  14. {
  15.     openlog("myDaemon", LOG_PID, LOG_DAEMON);
  16. }
  17. int main()
  18. {
  19.     int fd0, fd1, fd2;
  20.     //printf("start\n");
  21.     showProcess("start");
  22.     pid_t pid;
  23.     pid=fork();
  24.     if(pid<0) {
  25.         perror("fork");
  26.         return -1;
  27.     }
  28.     if(pid!=0) {
  29.         // parent
  30.         //sleep(1);
  31.         showProcess("fork 1 parent will exit");
  32.         exit(0);
  33.     }
  34.     showProcess("fork 1 end");

  35.     // child
  36.     setsid();
  37.     showProcess("setsid end");
  38.     pid=fork();
  39.     if(pid<0) {
  40.         perror("fork 2");
  41.         return -1;
  42.     }
  43.     if(pid!=0) {
  44.         // parent 2
  45.         showProcess("fork 2 parent will exit");
  46.         exit(0);
  47.     }
  48.     showProcess("fork 2 end");

  49.     chroot("/");

  50.     umask(002);

  51.     close(0);
  52.     close(1);
  53.     close(2);
  54.     fd0=open("/dev/null", O_RDWR);
  55.     fd1=dup(0);
  56.     fd2=dup(0);

  57.     showProcess("daemonized");

  58.     // daemonize over.
  59.     lf_opensyslog();
  60.     syslog(LOG_INFO, "%s\n", "daemonize over");

  61.     // start process
  62.     sleep(10);

  63.     syslog(LOG_INFO, "%s\n", "daemon stop");
  64.     closelog();
  65.     return 0;
  66. }

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