当前位置:   article > 正文

Linux-守护进程-shell_linux 守护进程 c语言、shell

linux 守护进程 c语言、shell

1.运行周期长,不需要交互或者在后台执行

2.守护进程编程流程

  (1).fork()   退出父进程

  (2).setsid()

  (3).fork()    退出父进程

  (4).chdir("/")

  (5).umask(0)    //清空掩码

  (6).close()

  (7).如果有子进程,处理僵死进程

二.shell程序

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <string.h>
  5. #include <time.h>
  6. #include <sys/stat.h>
  7. int main()
  8. {
  9. pid_t pid = fork();
  10. if ( pid != 0 )
  11. {
  12. exit(0);
  13. }
  14. setsid();//
  15. pid = fork();
  16. if ( pid != 0 )
  17. {
  18. exit(0);
  19. }
  20. chdir("/");
  21. umask(0);
  22. int maxfd = getdtablesize();
  23. for( int i = 0; i < maxfd; i++ )
  24. {
  25. close(i);
  26. }
  27. while( 1 )
  28. {
  29. FILE * fp = fopen("/tmp/c2208d.log","a");
  30. if ( fp == NULL )
  31. {
  32. break;
  33. }
  34. time_t tv;
  35. time(&tv);//
  36. fprintf(fp,"Time is %s", asctime( localtime(&tv)) );
  37. fclose(fp);
  38. sleep(5);
  39. }
  40. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/639471
推荐阅读
相关标签
  

闽ICP备14008679号