c语言监控重启 linux_如何在Linux下用c语言创建守护进程并监控系统运行期间的全部进程...

可以分三步来做: 做两个简单的守护进程,并能正常运行 监控进程是否在运行 启动进程 综合起来就可以了,代码如下: 被监控进程thisisatest.c(来自): #include #include #include #include #include #include #include #include void init_daemon() { int pid; int i; pid=fork(); if(pid<0) exit(1); //创建错误,退出 else if(pid>0) //父进程退出 exit(0); setsid(); //使子进程成为组长 pid=fork(); if(pid>0) exit(0); //再次退出,使进程不是组长,这样进程就不会打开控制终端 else if(pid<0) exit(1); //关闭进程打开的文件句柄 for(i=0;i=0) { time(&t); fprintf(fp,"current time is:%s\n",asctime(localtime(&t))); //转换为本地时间输出 fclose(fp); } } return; } 监控进程monitor.c: #include #include #include #include #include #include #include #include #include #include #include #define BUFSZ 150 void init_daemon() { int pid; int i; pid=fork(); if(pid<0) exit(1); //创建错误,退出 else if(pid>0) //父进程退出 exit(0); setsid(); //使子进程成为组长 pid=fork(); if(pid>0) exit(0); //再次退出,使进程不是组长,这样进程就不会打开控制终端 else if(pid<0) exit(1); //关闭进程打开的文件句柄 for(i=0;i=0) { count = does_service_work(); time(&t); if(count>0) fprintf(fp,"current time is:%s and the process exists, the count is %d\n",asctime(localtime(&t)), count); //转换为本地时间输出 else { fprintf(fp,"current time is:%s and the process does not exist, restart it!\n",asctime(localtime(&t))); //转换为本地时间输出 system("/home/user/daemon/thisisatest"); //启动服务 } fclose(fp); } } return; } 具体CMD命令: cc thisisatest.c -o thisisatest ./thisisatest cc monitor.c -o monitor ./monitor tail -f testfork3.log -- 查看日志

取消

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值