手机
当前位置:查字典教程网 >脚本专栏 >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);

}

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

使用scp获取远程linux服务器上的文件 linux远程拷贝文件

利用kernel提供的接口打印进程号(pid)

Linux中10个有用的命令行补全例子

shell生成简单格式的xml实例

Shell脚本实现的阳历转农历代码分享

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

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

Shell脚本去重的几种方法实例

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

kill特定进程的shell脚本代码

精品推荐
分类导航