源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-01-03 23:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用模板的方式创建守护进程代码实例
[u]复制代码[/u] 代码如下:
#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); }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部