1. 程式人生 > >如何保持守護程序被殺死後能夠再次啟動

如何保持守護程序被殺死後能夠再次啟動

系統自動啟動Linux APP 方式有很多

如利用 inittab init.d

關於守護程序被殺死後再次啟動的文章看了很多,一直沒找到適合我專案的。最後想了一個辦法曲線救國。

上程式碼

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
//inittab 加入監聽此程式
//利用此程式監聽test_api_app 程序執行情況
 
int main(void)
{
	char buffer[2];
	memset(buffer,'\0',2);
	int num;
	FILE    *fp;
	sleep(15);
	for(;;)
	{
		fp=popen("ps -ef | grep test_api_app | grep -v grep | wc -l","r");
		if(NULL == fp)
		{
			pclose(fp);
		}
		else
		{
			fgets(buffer,sizeof(buffer),fp);
			pclose(fp);
			num=atoi(buffer);
			//DbgPrintf("have %d pthread\n",num);
			if(num<0||num==0)
				system("test_api_app");
		}
		sleep(10);
	}
	return 0;
}

這樣做,我們可以保證此程式被殺死後能被inittab 再次啟動,此程式啟動後能監聽守護程序是否執行,如果程序數小於等於0,啟動程序。