问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux下监控进程是否挂掉的一种方法

发布网友 发布时间:2022-05-02 08:45

我来回答

1个回答

热心网友 时间:2023-10-14 10:17

所以,有时候对进程进行实时监控,当发现进程挂掉时,立刻重新启动进程,也是一种可以救急的方式(当然这个只是一种临时救急,并不是根本解决方法)。
实现方式:使用fork()创建子进程,子进程用于执行具体功能,主进程只是用于监控子进程,当主进程检测到子进程挂掉后,可以实现立即重新启动子进程。
子进程结束,系统会向主进程发送信号:SIGCHLD,主进程可以通过捕捉该信号,从而检测子进程已经不存在,进而继续下一步操作。如果需要,主进程还可以获得子进程是为何退出的。
源代码例子:#include#include#include#include#include#include#includevoid process_exit(int s){exit(0);}void child_fun(){printf("child_fun. ppid %d\n",getppid());
char *st = NULL;
strcpy(st, "123");}void fork_child(){pid_t child_process;
int status;
int signal_num;
wait(&status);//等待子进程中断或终止,释放子进程资源,否则死掉的子进程会变成僵尸进程
//如果子进程是由于某种信号退出的,捕获该信号
if(WIFSIGNALED(status))
signal_num = WTERMSIG(status);
child_process = fork();
if(child_process == 0){printf("fork new child process.\n");
child_fun();}}int main(){pid_t child_process;int i = 0;while(1){printf("fork new process.\n");
child_process = fork();
if(child_process > 0){while(1){//捕获子进程结束信号
signal(SIGCHLD, fork_child);
signal(SIGTERM, process_exit);
pause();//主进程休眠,当有信号到来时被唤醒。}}else if(child_process == 0){child_fun();}}return 0;}僵尸进程的产生:
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程如果没有给子进程收尸,死掉的子进程就变成僵尸进程了。僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有任何内存空间,它需要它的父进程来为它收尸。僵尸进程,无法正常结束,此时即使是root身份kill-9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。
僵尸进程的危害:
Linux系统对运行的进程数量有*,如果产生过多的僵尸进程占用了可用的进程号,将会导致新的进程无法生成。这就是僵尸进程对系统的最大危害。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
nfc技术可以把id卡的信息写入手机吗? 不知情的情况下不小心把公交车卡和手机贴在一起,居然读出了公交卡的余额... 奥运会李宁点燃火炬的时候在奔跑中,为啥一会快一会慢的,故意的还是节奏... 糖果的派对是什么意思 贵州的简称是什么字 强制执行公证执行受理法院明显不能授理但由于受了原告的钱所以... 玺悦怎么组成语? cv是处女的意思吗? CV圈跟配音圈的区别,主要区别就是圈子大小 ...我已经去法院申请强制执行了,要多久才能拿到钱? w7如何让电脑不休息 茶水洗脸有好处还是坏处呢? 童话故事匹诺曹的故事 为什么皮诺曹(匹诺曹)能深入人心?木偶奇遇记给你怎样的感触? 每天用茶水洗脸三十分钟 如何linux下监控进程及其子进程占用资源 《木偶奇遇记》通过匹诺曹的故事告诉 小朋友什么 K线形态在哪个时间周期使用比较好? 茶水能洗脸吗 “匹诺曹”对家庭教育有什么启示? 画趋势线,一般以什么时间周期的K线图比较好? 用茶水洗脸怎么样? 皮诺曹是一个什么样的人物?有什么寓意吗? 工伤赔偿老板拒不给钱 怎么办 咨询一下水基型灭火器到期时间? 匹诺曹的故事是什么意思,没读明白,要叫人怎么样啊? 已经判定10级工伤的,单位不给赔偿的,该怎么办? 匹诺曹的诞生讲一个什么道理? “匹诺曹”是什么意思? 如何监听linux中的程序进程,从而实现自动化 放置多长时间的茶水洗脸效果好 股票交易选哪个周期k线 Linux下如何让c程序一直运行 匹诺曹是什么意思 匹诺曹是什么意思? 木偶奇遇记里匹诺曹经历了怎样的事情 炒股行情分析k线图里面看什么周期的最好? 短线操作者使用哪种周日的K线图 华中数控第一季度业绩预告 财产保险赔款计算方式? 财产保险基本险如何赔付 什么样的重疾险才算好 上重疾险上什么样的好 小米遥控器什么时候才能控制灯 mm 是什么意思? 士兵一次性退役金与退伍费是一回事吗? 退伍费跟退役金是的区别? 城镇户口退伍和农村户口退伍退伍费有什么区别? 退伍费怎么算 退伍费是怎么算的