您的位置:首页 > 运维架构 > Linux

linux下用fork和kill来实现7*24进程

2017-01-16 18:03 381 查看
概念:

所谓7*24小时进程,就是说一天要7天每天都24小时不间断的运行。

问题:

而进程随着运行时间推进,可能会导致内存不断增加、占用文件描述符变多等资源问题。

方案:

所以要实现的就是有一个监控进程,来监控(kill函数第二个参数为0用来监控)工作进程是否结束。

进阶:

而如果是进程开始就fork两个子进程,子进程1作为工作进程,子进程2用来作为监控进程的话,如果工作进程异常结束,那么可能会有僵尸进程产生,因为他的父进程存在。

一个进程结束了,但是它的父进程没有等待(调用wait / waitpid)他,
那么他将变成一个僵尸进程。 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程。
     所以实现的方式是进程开始fork一个子进程A,在子进程中fork两个子进程B和C,然后将子进程A用exit退出,在子进程B中进行正常工作,子进程B中用kill监控进程A是否存在,如果进程A不存在的话,用system(“./argv[0] -r”)重启整个原始进程,然后进程C和A都exit退出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息