用模板的方式创建守护进程代码实例

 更新时间:2013年12月19日 15:17:25   作者:  
用模板的方式创建守护进程,只需要定义一个与int work(int argc,char **argv)相同的伪入口函数传入start_domain()函数即可

复制代码 代码如下:

#include "wrap.h"
#define MYDOMAIN_FLAG "/tmp/.mydomain_log"

void domain_end(){
 Unlink(MYDOMAIN_FLAG);
}

int domain_init(){
 int fd;
 fd=open(MYDOMAIN_FLAG,O_RDWR|O_CREAT|O_EXCL|O_APPEND,0600);
 if(fd==-1)
  err_sys(errno,"domain faild, %s",MYDOMAIN_FLAG);
 Dup2(fd,1);
 Dup2(fd,2);
 return fd;
}
/*
功能:
 work函数为我们的工作函数,他的返回值,会被init()系统进程收集作为守护的退出码
参数:
 argc,argv均为入口函数main()的参数副本。
*/
int work(int argc,char **argv){
 while(1){
  sleep(60);
  err_msg("one loop....");
 }
 return 0;
}
int start_domain(int argc,char **argv,int (*work)(int argc,char **argv)){
 pid_t pid;
 int  fd,ecode;
 fd=domain_init();
 if(Fork()==0){
  if(Fork()==0){
   Atexit(domain_end);
   err_msg("domain has ran sucessfully....");
   /*如果work()的返回时间比其父进程调用exit(0)的时间早,将不会被init()进程领养。以后我们会用管道的特点来同步父子进程。*/
   ecode=work(argc,argv);
   exit(ecode);
  }
  exit(0);
 }
 Wait(NULL);
 return 0;
}
int main(int argc,char **argv){
 return start_domain(argc,argv,work);
}

相关文章

  • hi 感恩节——Linux基础教程之mysql和php

    hi 感恩节——Linux基础教程之mysql和php

    这篇文章主要介绍了hi 感恩节——Linux基础教程之mysql和php的相关资料,需要的朋友可以参考下
    2015-11-11
  • shell批量创建文件并重新命名的实例代码

    shell批量创建文件并重新命名的实例代码

    这篇文章主要给大家介绍了关于shell批量创建文件并重新命名的相关资料,文中还介绍了批量删除文件以及文件更名的多种方法,每种方法都给出了详细实例代码,需要的朋友可以参考下
    2021-07-07
  • 使用find命令快速定位配置文件位置

    使用find命令快速定位配置文件位置

    大家知道在配置的时候咱们经常需要修改配置文件,甚至现在的开发就是配配配,记又记不住,每次自己查找太费时间,最近学会了一个命令-find,现在分享以下,本文以nginx为例子给大家详细介绍,对find命令定位配置文件位置相关知识感兴趣的朋友一起看看吧
    2022-12-12
  • 对用户输入的判断的shell实现代码

    对用户输入的判断的shell实现代码

    今天的案例是将 对用户输入的判断的shell脚本,需要的朋友可以参考下
    2016-08-08
  • 浅谈ubuntu 中sudo update与upgrade的作用及区别

    浅谈ubuntu 中sudo update与upgrade的作用及区别

    下面小编就为大家带来一篇浅谈ubuntu 中sudo update与upgrade的作用及区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Shell脚本对比两个文本文件找出不同行的2个方法分享

    Shell脚本对比两个文本文件找出不同行的2个方法分享

    这篇文章主要介绍了Shell脚本对比两个文本文件找出不同行的2个方法分享,本文分别使用comm命令法、grep命令法实现,需要的朋友可以参考下
    2014-12-12
  • Shell脚本字符串单引号和双引号的区别浅析

    Shell脚本字符串单引号和双引号的区别浅析

    这篇文章主要介绍了Shell脚本字符串单引号和双引号的区别浅析,,并罗列了一些字符串的操作方法,需要的朋友可以参考下
    2014-07-07
  • linux shell 中数组的定义和for循环遍历的方法

    linux shell 中数组的定义和for循环遍历的方法

    今天小编就为大家分享一篇linux shell 中数组的定义和for循环遍历的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Linux grep -q用法示例详解

    Linux grep -q用法示例详解

    grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来,这篇文章主要介绍了Linux grep -q用法示例详解,需要的朋友可以参考下
    2023-02-02
  • linux下通过命令行获取gmail的新邮件

    linux下通过命令行获取gmail的新邮件

    在这篇文章中,我将为你展示 Linux 命令行的另一个漂亮干练的使用案例:访问 Google 的 Gmail 服务,有需要的小伙伴可以参考下。
    2015-05-05

最新评论