守护进程守护自身
来源:互联网 发布:网易邮箱大师 for mac 编辑:程序博客网 时间:2024/04/26 12:58
守护进程关于守护自身的方法
1 创建子进程循环检测父进程是否退出, 退出的话将父进程拉起来
2 父进程设置sigset(SIGCHLD, &sighandler) 子进程退出在这里进行处理重新拉起子进程 sigset(SIGCHLD, &sighandler);
ret = dmnDmn();
sighandler
void sighandler(int sig) { pid_t pd; int ret; BASLOG(LOG_LEVEL_DEBUG,"sighandler begin sig[%d]", sig); pd = wait(0); //守护的守护子进程死亡 if (g_dmnPid == pd) { usleep(50000); ret = dmnDmn(); if (FAILURE == ret) { BASLOG(LOG_LEVEL_ERROR,"调用dmnDmn失败"); } } else { BASLOG(LOG_LEVEL_ERROR,"死亡进程非dmnDmn!"); } BASLOG(LOG_LEVEL_DEBUG,"sighandler end sig[%d]", sig);}
dmnDmn
int dmnDmn(){ int pFork; pid_t pPid; pFork = fork(); if (0 == pFork) { //子进程操作 getpid getppid BASLOG(LOG_LEVEL_DEBUG,"dmnDmn 子进程操作 getpid[%d]", getpid()); /* 循环检查父进程 */ while (1) { pPid = getppid(); /* 若父进程死亡,重启进程父进程 */ if (1 == pPid) { execv(gsExecPath[0], gsExecPath); BASLOG(LOG_LEVEL_ERROR,"重启守护进程失败"); } /* 可配 */ usleep(50000); } } //父进程操作 /* 保存 守护功能的子进程 的进程号 */ g_dmnPid = pFork; BASLOG(LOG_LEVEL_DEBUG,"dmnDmn 父进程操作 g_dmnPid[%d]", g_dmnPid); return SUCCESS;}
0 0
- 守护进程守护自身
- 关于R3下的自身进程守护
- 守护线程、守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 进程守护
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- 守护进程
- C语言中使用位运算编写程序
- Swift 闭包 (oc 的block 类似)
- 如何在CentOS 7上安装MySQL
- 1066. Root of AVL Tree (25)
- 生活:你是如何毁掉生活中的情趣的
- 守护进程守护自身
- Spring的IOC原理[通俗解释一下]
- Hibernate 的三种查询方式:HQL、Criteria、Sql
- 事件分发机制
- loadrunner 关联
- 树的同构(JAVA语言实现)
- java入门教程(一)环境搭建
- Apache 常用包
- 分享几个不错的博客