亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? procguard.cpp

?? 能查看系統進程
?? CPP
字號:

#include "ProcGuard.h"

/*
#include <sys/socket.h>	
#include <sys/select.h>	
#include <sys/ioctl.h>	
#include <arpa/inet.h>	
#include <netdb.h>	
#include <netinet/in.h>	
#include <sys/time.h>	
#include <sys/types.h>	
#include <unistd.h>	
#include <sys/types.h>
#include <linux/fs.h>
#include <sys/stat.h>

typedef struct _ihdr
{ 
    unsigned short int i_type, i_code; 
    unsigned short int i_cksum,i_id, i_seq;  
}IcmpHeader;  
struct sockaddr_in saDestAddr;  
string Messtr,Tmpstr; 

unsigned short int checksum(unsigned short int *buffer, int size)
{
    unsigned long cksum=0;
    while(size >1)
    {
        cksum+=*buffer++;
        size -=sizeof(unsigned short int);
    }
    if(size )
    {
        cksum += *(unsigned char*)buffer;
    }
    cksum = (cksum >> 16) + (cksum & 0xffff);
    cksum += (cksum >>16);
    return (unsigned short int)(cksum);
}


bool Autotest(unsigned char * szDestHost,int Ktest)  
{ 
//    WSADATA wsaData; 
    int sockRaw; 
    struct sockaddr_in dest,from; 
    char icmp_data[10], recvbuf[100];  
    unsigned int addr=0; 
    int fromlen = sizeof(from);  
    int timeout = 1000; //ms 

//    WSAStartup(MAKEWORD(2,1),&wsaData) ; 
    sockRaw = socket (AF_INET,SOCK_RAW,IPPROTO_ICMP);  
    setsockopt(sockRaw,SOL_SOCKET,SO_RCVTIMEO, 
    (char*)&timeout,sizeof(timeout) ); 
    memset(&dest,0,sizeof(dest));  
    dest.sin_family = AF_INET; 
    dest.sin_addr.s_addr= inet_addr(szDestHost);  
    memset(icmp_data,0,sizeof(icmp_data)); //clear icmp_data. 
    ((IcmpHeader*)icmp_data)->i_type = 8; //ICMP_ECHO 
    ((IcmpHeader*)icmp_data)->i_code = 0; 
    ((IcmpHeader*)icmp_data)->i_id = (unsigned short int)GetCurrentProcessId(); 
    ((IcmpHeader*)icmp_data)->i_seq = 0; 
 
    for(int k=0; k 
    {  
        ((IcmpHeader*)icmp_data)->i_cksum = 0;  
        ((IcmpHeader*)icmp_data)->i_seq ++; 
        ((IcmpHeader*)icmp_data)->i_cksum=checksum((unsigned short int*)icmp_data,8);  
        sendto(sockRaw,icmp_data,8,0,(struct sockaddr*)&dest,sizeof(dest));  
        int bread=recvfrom(sockRaw,recvbuf,1024,0,(struct sockaddr*)&from, 
&fromlen); 
        if (bread == SOCKET_ERROR)
        { 
            if(k==Ktest-1) goto ERR1 ;  
            else continue; //try again(3 times) 
        }  
    }  
    return TRUE; //no erros. 
ERR1: 
    closesocket (sockRaw);  
    sockRaw= INVALID_SOCKET;  
//    WSACleanup(); 
    return FALSE;  
} 
*/
//---------------------------------------------------------------------------
/*int ProcessWatch()
{
    char szCmd[256];
    FILE *fp;
    char acTemp[1024];
    int i,iPingSuccess=0;
     
    system("top >/tmp/top.txt"); 
    fp=fopen("/tmp/top.txt","r");
    if(fp==NULL)
    {
        return -1;
    }
    fgets(acTemp,1024,fp);
    for(i=0;i<iCount;i++)
    {
        fgets(acTemp,1024,fp);
//        printf("acTemp=%s\n",acTemp);
        if(strstr(acTemp,"time="))
        {
            iPingSuccess++;


*/


int CProcGuard::ProcessHealthWatch(ProcessHealthStatus *pstProcessHealth,int *iCount)
{
    char acTemp[1024],acProcessName[128],acTempStr[256];
    FILE *fp;
    int i=0,iProcessId;
    //int iCount=0;
    float fCpu,fMem;
    system("top -d 10 >/tmp/top.txt");
    system("ps -x|grep top >/tmp/toplist.txt");
    fp=fopen("/tmp/toplist.txt","r");
    if(fp==NULL)
    {
        return -1;
    }
    while(fgets(acTemp,1024,fp))
    {    
        sscanf(acTemp,"%d %s %s %s %s ",&iProcessId,acTempStr,acTempStr,acTempStr,acProcessName);
        if(!strcmp(acProcessName,"top"))
        {
            KillProcess(iProcessId);
        }
    }
    fclose(fp);
    fp=fopen("/tmp/top.txt","r");
    if(fp==NULL)
    {
        return -1;
    }
    fgets(acTemp,1024,fp);
    fgets(acTemp,1024,fp);
    fgets(acTemp,1024,fp);
    fgets(acTemp,1024,fp);
    while(fgets(acTemp,1024,fp))
    {
        sscanf(acTemp,"%d %s %s %s %s %f %f %s",iProcessId,acTempStr,acTempStr,acTempStr,acTempStr,fCpu,fMem,acProcessName);
        if(fCpu>40.0 || fMem>40.0)
        {
            pstProcessHealth[*iCount].iProcessId = iProcessId;
            strcpy(pstProcessHealth[*iCount].acProcessName , acProcessName);
            pstProcessHealth[*iCount].fCpu = fCpu;
            pstProcessHealth[*iCount].fMem = fMem;
            *iCount ++;
            printf("Process Status: %s\n",acTemp);
        }

    }
    fclose(fp);
    return 0;
}

int CProcGuard::ProcessWatch()
{
    int iCountPre=0;
    int iCountNext=0;
    int i,j;
    ProcessHealthStatus stProcessPrevious[10],stProcessNext[10];
    ProcessHealthWatch(stProcessPrevious,&iCountPre);
    sleep(3);//sleep then read process status again to compare
    ProcessHealthWatch(stProcessNext,&iCountNext);
    for(i=0;i<iCountPre;i++)
    {
        for(j=0;j<iCountNext;j++)
        {
            if(stProcessPrevious[i].iProcessId=stProcessNext[j].iProcessId)
            {
                KillProcess(stProcessNext[j].iProcessId);
            }
        }
    }
    return 0;
}



int CProcGuard::DialWatch()
{
    char acTemp[1024],acTempStr[128],acProcessName[128];
    FILE * fp;
    int i=0;
    printf("Testing whether ppp-on is running\n");
    system("ps -x|grep ppp-on >/tmp/ppp.txt");
    fp= fopen("/tmp/ppp.txt","r");
    if(fp==NULL)
    {
        return -1;
    }
    while(fgets(acTemp,1024,fp))
    {
        printf("%s\n",acTemp);
        sscanf(acTemp,"%s %s %s %s %s ",acTempStr,acTempStr,acTempStr,acTempStr,acProcessName);
        
        if(!strcmp(acProcessName,"ppp-on"))
            break;
        else
            i++;
    }
    if(i==0)
    {
        system("/etc/ppp/ppp-off");
        printf("exec ppp-off\n");
        system("/etc/ppp/ppp-on");
        printf("exec ppp-on\n");
    }
    return 0;
}

int CProcGuard::LinkTest(char *szLinkString,int iCount)
{
    char szCmd[256];
    FILE *fp;
    char acTemp[1024];
    int i,iPingSuccess=0;
    if(iCount<1 || iCount > 10)
    {
        return -1;
    }
     
    sprintf(szCmd,"ping -c ");
    sprintf(szCmd+8,"%d ",iCount);
    strcat(szCmd,szLinkString);
    strcat(szCmd," >/tmp/ping.txt");
    printf("szCmd=%s\n",szCmd);
    system(szCmd); 
    //sleep(iCount+5);//waiting for ping exec
    fp=fopen("/tmp/ping.txt","r");
    if(fp==NULL)
    {
        return -1;
    }
    fgets(acTemp,1024,fp);
    for(i=0;i<iCount;i++)
    {
        fgets(acTemp,1024,fp);
        printf("Ping: %s\n",acTemp);
        if(strstr(acTemp,"time="))
        {
            iPingSuccess++;
        }
      
    }
    fclose(fp);
    return iPingSuccess;
}

int CProcGuard::IsNetActive()
{
    printf("Enter IsNetActive...\n");
    if((LinkTest(m_strLinkTest1,5) > 0) || (LinkTest(m_strLinkTest2,5)  > 0))
    {
        return 1;
    }
    else
    {
        printf("Network disconnected!\n");
        return 0;
    }
 
}

int CProcGuard::KillProcess(int iProcessId)
{
    char acTemp[128];
    strcpy(acTemp,"kill -9 ");
    sprintf(acTemp+8,"%d",iProcessId);
    system(acTemp);
    printf("Kill Process: %d\n",iProcessId);
    return 0;
}

string getFileName(string str)
{
        int len = str.length();
        int pos = str.rfind('/',len -1);

        string tstr;
        if( pos >= 0 )
        {
                pos ++;
                while( str[pos] != '\0' )
                        tstr+=str[pos++];
        }
        else
        	tstr = str;
        
        return tstr;
}

string getFilePath(string str)
{
        int len = str.length();
        int pos = str.rfind('/',len -1);

        string tstr;
        if( pos >= 0 )
        {
        	str[pos] = '\0';
            tstr = str;
        }
        else
        	tstr = "./";
        
        return tstr;
}

CProcGuard::CProcGuard()
{
  printf("CProcGuard:begin load cfg file\n");
        m_strTmpfName = "./tmp.tmp";
        if( loadConfig() == false )
        	exit(0);        	
}

bool CProcGuard::loadConfig()
{
    printf("Load procGuard configre file\n");
    CIniFile cfgFile;
	if( cfgFile.Open(CFGFILE) )
	{
		cfgFile.LocateHeading("TOTAL");
		cfgFile.LocateKey("DELAY");
		cfgFile.ReadInt(m_nDelaytm);
		
		cfgFile.LocateHeading("TOTAL");
		cfgFile.LocateKey("PROCNUM");
		cfgFile.ReadInt(m_nProcess);
	
	
	        cfgFile.LocateHeading("TOTAL");
		cfgFile.LocateKey("LINKTYPE");
		cfgFile.ReadString(m_strLinkType);
                if(!strcmp(m_strLinkType,"CDMA"))
                     m_nLinkType = 1;
                else if(!strcmp(m_strLinkType,"GPRS"))
                     m_nLinkType = 1;
                else if(!strcmp(m_strLinkType,"ADSL"))
                     m_nLinkType = 2;
                else if(!strcmp(m_strLinkType,"ETHERNET"))
                     m_nLinkType = 3;
                else m_nLinkType = 4;
	        cfgFile.LocateHeading("TOTAL");
		cfgFile.LocateKey("LINKTEST1");
		cfgFile.ReadString(m_strLinkTest1);
	
	        cfgFile.LocateHeading("TOTAL");
		cfgFile.LocateKey("LINKTEST2");
		cfgFile.ReadString(m_strLinkTest2);
	
printf("m_strLinkTest1 = %s\n",m_strLinkTest1);
printf("m_strLinkTest2 = %s\n",m_strLinkTest2);
		for(int i=0;i<m_nProcess;i++)
		{
			string strProc;
			
			cfgFile.LocateHeading("PROCESS");
				char szKey[8]={0};
				sprintf(szKey,"PROC%d",i+1);
			cfgFile.LocateKey(szKey);
			cfgFile.ReadString(strProc);
			
//.			this->AddProc(strProc);
		}
		
		cfgFile.Close();
	}
	else
	{
		printf("Configure file loaded failed!\n");
		return false;
	}
	return true;
}

bool CProcGuard::AddProc(string str)
{
        tagProcInfo *pProc = new tagProcInfo;
        if( pProc == NULL )
                return false;
        pProc->strNam = getFileName(str);
        pProc->strPath = getFilePath(str);
        pProc->bRuning = false;

//        m_lstProc.push_back(pProc);
        m_arrProc.push_back(pProc);
        return true;
}

bool CProcGuard::IsProcRuning(tagProcInfo *pProc)
{
#ifdef _WIN32
	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  //獲得某一時刻系統的進程的快照信息

	PROCESSENTRY32 procInfo;
	procInfo.dwSize=sizeof(PROCESSENTRY32);
	BOOL bMore = Process32First(hSnapshot,&procInfo); //獲得系統進程鏈表中第一個進程的信息
	for(int i=0;bMore;i++)
	{
                char procNam[128];
                memcpy(procNam,procInfo.szExeFile,sizeof(procInfo.szExeFile));
                if( strcmp(procNam,pProc->strNam) == 0 )
                        return true;
                //獲得下一進程
		bMore=Process32Next(hSnapshot,&procInfo);
	}
    return false;
#else
    char szCmd[128];
    memset(szCmd,0,sizeof(szCmd));
    sprintf(szCmd,"ps -ef | grep ");
    sprintf(szCmd+14,"%s | awk '{print $8}' > ",pProc->strNam.c_str());
    sprintf(szCmd+14+pProc->strNam.length()+22,"%s ",m_strTmpfName.c_str());
    system(szCmd);
    
	FILE *fp = fopen(m_strTmpfName.c_str(),"rt");
	if( fp == NULL )
	{
	        cout<<"."<<endl;
	        return true;    // 算本次運行失敗,運行下次運行.
	}
	
	char par[128] ={0};
	while ( fgets(par,128,fp) )
	{
		string tstr = par;
		tstr = getFileName(tstr);
		if( tstr == pProc->strNam )
		{
			fclose(fp);
			return true;
		}
	}
	fclose(fp);
	return false;
#endif
/*        // 生產 系統調用命令字符串
        char szCmd[128];
        memset(szCmd,0,sizeof(szCmd));
        sprintf(szCmd+0,"C:/tlist -p ");
                getFileName(str);
        sprintf(szCmd+12,"%s",str.c_str(),str.length());
        sprintf(szCmd+12+str.length()," > %s ",m_strTmpfName.c_str());
                //如: "C:/tlist -p E:/telnet/QQ.exe > C:/tmp.tmp"

        // 檢查 進程是否運行,并寫文件
        if( system(szCmd) != 0 )
        {
                cout<<"system call failed! Anykey exit."<<endl;
                getchar();
                exit(-1);
        }

        // 讀取 生成的文件,查看進程狀態
        Sleep(1000);
        FILE *fp = fopen(m_strTmpfName.c_str(),"rt");
        if( fp == NULL )
        {
                cout<<"."<<endl;
                return true;    // 算本次運行失敗,運行下次運行.
        }

        char par[8] ={0};
        fgets(par,8,fp);
        fclose(fp);
        if(par[0] == '-')
                return false;
        else
                return true;
*/
}

bool CProcGuard::StartupProc(tagProcInfo *pProc)
{
	// 形成命令
	char szCmd[128];
    memset(szCmd,0,sizeof(szCmd));
    sprintf(szCmd,"%s/%s ",pProc->strPath.c_str(),pProc->strNam.c_str());

    #ifdef _WIN32
	    int ret = WinExec(szCmd,SW_SHOW);
	    if( ret < 31 )
	    {
	            cout<<str<<" startup failed"<<endl;
	            return false;
	    }
	    return true;
	#else
	    	// 執行命令
	    int ret = system(szCmd);
	    
    	if( ret >= 0 )
    		return true;
    	else
    		return false;
    #endif
}

void CProcGuard::Run()
{
    while( 1 )
	{
        #ifdef _WIN32
       		Sleep(m_nDelaytm*1000);
       	#else
       		sleep(m_nDelaytm);
       	#endif
//printf("run....\n");


        switch(m_nLinkType)
        {
             case  1: 
                           if(!IsNetActive())
                               DialWatch();
                           break;
             default:      break;
        }      
	for(int i=0;i<m_arrProc.size();i++)
    	{
			tagProcInfo *pProc = (tagProcInfo *)m_arrProc[i];

    		if( IsProcRuning(pProc) == false )
    		{
    			if( StartupProc(pProc) == true )
    				pProc->bRuning = true;
    		}
    	}
    }
}

CProcGuard::~CProcGuard()
{
    char szCmd[128];       
    memset(szCmd,0,sizeof(szCmd));
    sprintf(szCmd+0,"del ");
    sprintf(szCmd+4,"%s",m_strTmpfName.c_str());
    
	if( system(szCmd) != 0 )
		cout<<"tmp file delete failed"<<endl;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久综合亚洲| 一区二区久久久久| 一区二区三区蜜桃网| 免费看日韩a级影片| 99久久99久久精品免费观看| 欧美精品亚洲一区二区在线播放| 国产清纯在线一区二区www| 婷婷久久综合九色国产成人| 不卡一区在线观看| 久久综合九色综合97_久久久| 亚洲一区国产视频| 97成人超碰视| 国产亚洲一区二区三区在线观看 | 精品国产91乱码一区二区三区| 亚洲男人的天堂一区二区 | 国产人成亚洲第一网站在线播放| 丝袜美腿一区二区三区| 一本高清dvd不卡在线观看| 欧美国产成人在线| 国产精品影视天天线| 日韩精品综合一本久道在线视频| 尤物在线观看一区| 色伊人久久综合中文字幕| 亚洲国产精品高清| 丁香亚洲综合激情啪啪综合| 精品国产免费人成电影在线观看四季| 亚洲bdsm女犯bdsm网站| 欧美色综合久久| 亚洲一卡二卡三卡四卡| 91国产免费观看| 亚洲精品视频在线看| 日本高清不卡aⅴ免费网站| 亚洲日本在线看| 在线一区二区三区四区| 一区二区三区四区av| 在线观看日韩电影| 亚洲.国产.中文慕字在线| 777欧美精品| 久久精品国内一区二区三区| 精品国产精品一区二区夜夜嗨| 久草热8精品视频在线观看| 日韩精品专区在线影院观看| 国内精品伊人久久久久av一坑| 精品国产99国产精品| 成人污视频在线观看| 亚洲欧洲综合另类| 制服丝袜成人动漫| 久久99精品网久久| 久久久电影一区二区三区| 成人a免费在线看| 亚洲免费色视频| 欧美人妇做爰xxxⅹ性高电影| 麻豆精品一区二区综合av| www国产精品av| av一区二区久久| 青娱乐精品在线视频| 久久亚洲一区二区三区明星换脸| www.视频一区| 日韩中文字幕1| 久久精品欧美日韩精品| 欧美亚洲禁片免费| 国产成人在线色| 亚洲香肠在线观看| 国产偷国产偷亚洲高清人白洁| 色综合色综合色综合 | 日韩欧美一二三四区| 国产·精品毛片| 亚洲影院免费观看| 久久久亚洲精华液精华液精华液 | 亚洲欧美日韩一区二区| 91精品一区二区三区久久久久久| 国产老妇另类xxxxx| 亚洲人成伊人成综合网小说| 日韩一区二区三区在线视频| 成人午夜精品一区二区三区| 午夜亚洲福利老司机| 国产精品美女久久久久高潮| 在线综合+亚洲+欧美中文字幕| 国产成人亚洲精品狼色在线| 亚洲成人午夜电影| 国产精品久久一级| 日韩视频123| 欧美日韩综合在线免费观看| 国产91丝袜在线播放| 午夜免费欧美电影| 亚洲狠狠丁香婷婷综合久久久| 亚洲精品在线电影| 欧美日本在线一区| 日本高清免费不卡视频| 成人免费av网站| 国产在线精品免费av| 亚洲aⅴ怡春院| 一区二区高清在线| 亚洲欧洲av色图| 久久人人97超碰com| 欧美一级二级在线观看| 欧美三级日韩三级国产三级| 播五月开心婷婷综合| 国产精品中文字幕日韩精品| 视频在线观看91| 亚洲成人www| 亚洲一区二区三区影院| 亚洲乱码一区二区三区在线观看| 亚洲国产精品二十页| 久久夜色精品国产欧美乱极品| 91精品国产入口在线| 欧美欧美欧美欧美| 欧美喷潮久久久xxxxx| 欧美日韩国产一区二区三区地区| 欧美性一区二区| 欧美人与性动xxxx| 欧美日韩你懂得| 欧美日韩一区在线| 欧美精品vⅰdeose4hd| 欧美剧情片在线观看| 精品视频在线免费观看| 欧美欧美欧美欧美首页| 欧美伦理电影网| 欧美一区二区三区思思人| 日韩一级二级三级| 日韩美女在线视频| 欧美精品一区二区三区蜜臀| 久久综合狠狠综合久久激情| 久久久国产午夜精品| 国产精品久久久久久久浪潮网站| 中文字幕一区二区日韩精品绯色| 1区2区3区欧美| 亚洲一区视频在线| 免费看日韩精品| 国产精品一区二区你懂的| 风间由美一区二区三区在线观看| 国产不卡视频一区二区三区| 99热精品一区二区| 欧美唯美清纯偷拍| 欧美成人三级在线| 国产欧美一区二区精品性色| 国产精品久久久久天堂| 亚洲免费资源在线播放| 欧美aaaaa成人免费观看视频| 国产九色sp调教91| 色狠狠一区二区| 精品久久一区二区三区| 中文字幕永久在线不卡| 日韩黄色免费网站| 国产高清精品久久久久| 欧美亚洲国产一区二区三区| 欧美v国产在线一区二区三区| 国产人成亚洲第一网站在线播放| 亚洲精品国产精华液| 男男视频亚洲欧美| 成人h动漫精品一区二| 欧美日韩中文国产| 国产欧美日本一区视频| 亚洲成人一区二区在线观看| 国产黄人亚洲片| 欧美日本在线视频| 国产精品欧美经典| 日韩av一区二区三区四区| 粉嫩av一区二区三区粉嫩| 欧美老肥妇做.爰bbww| 国产精品少妇自拍| 日本免费在线视频不卡一不卡二| 成人av网址在线观看| 日韩三级精品电影久久久| 中文字幕一区二区日韩精品绯色| 美女www一区二区| 91福利国产精品| 国产欧美日韩卡一| 久久国产婷婷国产香蕉| 色94色欧美sute亚洲线路一久| 亚洲精品一区二区三区99| 亚洲电影你懂得| 97精品国产露脸对白| 久久久久国产精品麻豆ai换脸| 亚洲国产精品麻豆| 岛国av在线一区| 久久青草欧美一区二区三区| 日韩精品欧美成人高清一区二区| 91小视频免费观看| 中文成人av在线| 国产99久久久久| 久久夜色精品国产噜噜av| 免费在线观看一区| 欧美精品精品一区| 亚洲午夜在线视频| 在线观看三级视频欧美| 一区二区三区精品在线观看| 成人永久看片免费视频天堂| 亚洲精品在线免费播放| 老司机精品视频在线| 91精品欧美福利在线观看| 亚洲一线二线三线视频| 色94色欧美sute亚洲线路二 | 91蝌蚪国产九色| 国产精品国产三级国产aⅴ入口| 韩国精品主播一区二区在线观看| 欧美一级二级三级蜜桃| 免费看欧美美女黄的网站| 欧美一级欧美一级在线播放| 午夜不卡在线视频|