用模板的方式创建守护进程代码实例
2013-12-19 00:00
579 查看
#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); }
相关文章推荐
- 30. 代码实例-设计模式-回调方式使用模板方法
- Python守护进程(daemon)代码实例
- 《王保明老师----Linux开发学习笔记》------讲12:守护进程 -----如何分析和理解下面这个创建守护进程的实例
- PHP创建桌面快捷方式的实例代码
- PHP创建桌面快捷方式的实例代码
- Python守护进程(daemon)代码实例
- 创建单实例守护进程
- linux下创建守护进程(daemon process)代码-详细注释
- linux下创建守护进程(daemon process)代码-详细注释
- windows下创建守护进程的简便方式
- linux创建守护进程且进程中只有唯一实例
- Android中创建快捷方式代码实例
- linux下创建后台守护进程实例
- 利用C#编写Linux守护进程实例代码
- Java 利用dom方式读取、创建xml详解及实例代码
- pycharm+django创建一个搜索网页实例代码
- 创建Bean的三种方式 在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法。实际上,Sprin
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
- MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)