红联Linux门户
Linux帮助

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

发布时间:2017-01-18 09:26:39来源:linux网站作者:咖啡与唾液淀粉酶
概念:
所谓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