当前位置:  操作系统/服务器>linux

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

    来源: 互联网  发布时间:2014-10-15

    本文导语:  代码如下:#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);...

代码如下:

#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);
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c++模板(Template)介绍及模板参数中包含模版
  • PHP模板引擎 费尔模板引擎
  • c++通用模板类(template class)定义实现详细介绍
  • Destoon模板怎么制作?destoon模板制作简单教程
  • C++可变参数模板(variadic template)详细介绍及代码举例
  • 关于模板类局部特化的错误:模板参数太少。
  • c++模板(template)中的class和typename关键字异同比较
  • Java模板引擎 Snippetory
  • C++ STL标准模板库类String成员详细列表参考及示例代码
  • 网页模板引擎 Jenner
  • 多脚本语言模板引擎 Tenjin
  • 模板引擎 JET
  • destoon公司主页模板风格的添加方法
  • 费尔PHP模板引擎
  • JavaScript模板引擎 ECT
  • 模板配置系统 CoreTML
  • PHP模板语言 Twig
  • 模板引擎 ETPL
  • JS模板引擎 BaiduTemplate
  • JavaScript模板引擎 EasyTemplate
  • JS模板引擎 Trimpath


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3