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

作者: 咖啡与唾液淀粉酶 2017-01-18 09:26:39

概念:


所谓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退出。


 


本文永久更新地址:http://www.linuxdiyf.com/linux/27898.html

相关资讯