手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >用模板的方式创建守护进程代码实例
用模板的方式创建守护进程代码实例
摘要:复制代码代码如下:#include"wrap.h"#defineMYDOMAIN_FLAG"/tmp/.mydomain_log"voidd...

复制代码 代码如下:

#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_tpid;

intfd,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);

}

【用模板的方式创建守护进程代码实例】相关文章:

使用netcat(瑞士军刀)进行文件传输

awk中NR和FNR的区别小结和实例演示

Shell脚本处理浮点数的运算和比较实例

ssh远程执行命令方法和Shell脚本实例

unix编程创建前缀固定的临时文件代码分享

shell脚本编写的俄罗斯方块游戏代码

用于检测进程的shell脚本代码小结

linux 创建守护进程的相关知识

分享一个入门级可控多线程shell脚本代码

五个常用的Linux监控脚本代码

精品推荐
分类导航