コード例 #1
0
ファイル: StatFormBase.cpp プロジェクト: xkmld419/crawl
bool StatFormBase::ConnectGuardMain()
{
	DetachShm ();
	if (AttachShm (0, (void **)&pInfoHead) >= 0) 
	{
		pProcInfoHead = &pInfoHead->ProcInfo;
	} 
	else 
	{
		return false;
	}
	return true;
}
コード例 #2
0
ファイル: Channel.cpp プロジェクト: xkmld419/crawl
//连接共享内存
int Channel::connectGuardMain()
{
	DetachShm ();
	if(AttachShm (0, (void **)&m_pInfoHead) >= 0)		//连接GuardMain
	{
		m_pProcInfoHead = &m_pInfoHead->ProcInfo;			//得到进程信息首地址
	}
	else 
	{
		//Log::log(0,"运行时告警:连接共享内存失败,GuardMain可能不存在\n");
		//ALARMLOG(0,MBC_schedule+24,"%s","连接共享内存失败,GuardMain可能不存在");
		return -1;
	}
	return 0;
}
コード例 #3
0
ファイル: Hbinstalltest.cpp プロジェクト: xkmld419/crawl
//根据processId 启动进程
int Hbinstalltest::beginRunPro(int iProcessId)
{
	 if(iProcessId <= 0) return -1;
	 	
	 THeadInfo *pInfoHead = NULL;
	 TProcessInfo *pProcInfoHead = NULL;
	 
   if((AttachShm(0,(void **)&pInfoHead))<0)  //联入共享内存,取进程信息
   {
   	Log::log(0,"联入监控共享缓冲区不存在");
   	return -1;
   }
   
   pProcInfoHead = &(pInfoHead->ProcInfo);
   
   if(pProcInfoHead == NULL) return -1;
   
   for (int i=0; i<pInfoHead->iProcNum; i++) 
   {
   	
   	if(pProcInfoHead[i].iProcessID==iProcessId)
   	 {
   	 	  int iSysPID = pProcInfoHead[i].iSysPID;
   	 	  if(iSysPID != 0)
   	 	  {
   	 	  	if(kill(iSysPID,0) == 0)
   	 	    {
   	 	    	Log::log(0,"需要启动的process_id=%d对应的程序已经启动,请检查!",iProcessId);
   	 	    	return 0;
   	 	    }
   	 	  }
   	 	  
	   	 if (pProcInfoHead[i].iState != ST_RUNNING && \
	            pProcInfoHead[i].iState != ST_INIT) 
	   	 {
	        pProcInfoHead[i].iState = ST_WAIT_BOOT;
	        Log::log(0,"成功致标志位,进程 process_id=%d 启动!!",iProcessId);
	        return 0;
	     }
	   }
	   
	   continue;
	   
	}
	
	Log::log(0,"共享内存找不到需要启动的 process_id=%d 进程 %d",iProcessId);
  return -1;	
}
コード例 #4
0
ファイル: Hbinstalltest.cpp プロジェクト: xkmld419/crawl
/*进程启停状态判断*/
int Hbinstalltest::processState(int m_process)
{
	THeadInfo *pInfoHead = NULL;
  	TProcessInfo *pProcInfoHead = NULL;
  	
  	if((AttachShm(0,(void **)&pInfoHead))<0)  //联入共享内存,取进程信息
   {
   	Log::log(0,"联入监控共享缓冲区不存在");
   	return -1;
   }
   pProcInfoHead = &(pInfoHead->ProcInfo);
   for(int i=0; i<pInfoHead->iProcNum;i++)
  {
  	 if(pProcInfoHead[i].iProcessID != m_process);
  	 else
  	 	{
  	 		while(true)
  	 		{
		  	 	if(pProcInfoHead[i].iState == 2 || \
		  	 		 pProcInfoHead[i].iState == 8)
		  		{
		  	 		Log::log(0,"进程%d启动成功",m_process);
		  	 		return 0;
	  	 		}
	  	 		else if(pProcInfoHead[i].iState == 6 || \
	  	 			      pProcInfoHead[i].iState == 5  || \
	  	 			      pProcInfoHead[i].iState == 0  || \
	  	 			      pProcInfoHead[i].iState == 7)
	  	 		{
	  	 			Log::log(0,"进程%d未能启动,请检查log目录下process_%d.log",m_process,m_process);
	  	 			return -1;
	  	 	  }	
	  	 		else
	  	 		{
	  	 			sleep (2);
	  	 			continue;
	  	 		}
	  	 	}
  	 }
  }
  
  Log::log(0,"没有找到要检查的进程 %d",m_process);
  return -1;
}
コード例 #5
0
ファイル: mainc2.c プロジェクト: mydecember/job
/*void** malloc2d(int line, int col,int unitsize)
{
	int i;
	int col_size=col*unitsize;
	int index_size=line*sizeof(void*);
	void **a=(void**)malloc(index_size+line*col_size);
	char *data_start=(char*)a+index_size;
	for(i=0;i<line;++i)
	a[i]=data_start+i*col_size;
	return a;
}*/
int init_loop(struct loopbuf** loop,int *shmid,char *shmpath,int id){ 
//	int shmid;
		*shmid=CreateShm(shmpath,id,sizeof(UC_ShmMemory));
		*loop=(UC_ShmMemory*)AttachShm(*shmid);
	
		//my_lock_init(*loop);

	(*loop)->looplen=ROW;
	(*loop)->buflen=COL;
	(*loop)->tail=0;
	(*loop)->head=0;
	printf("aaa\n");
	return 1;
	//sem_init(&loop->sem,0,0);
//	memset(loop->recvlen,0,MAX_RECV_QUEUE*sizeof(int));
	
//	loop->p=(char**)malloc2d(row,col,typelen);	
	
}
コード例 #6
0
ファイル: Hbinstalltest.cpp プロジェクト: xkmld419/crawl
//根据processId 停止启动进程
int Hbinstalltest::stopPro(int iProcessId)
{
	 if(iProcessId <= 0) return -1;
	 	
	 THeadInfo *pInfoHead = NULL;
	 TProcessInfo *pProcInfoHead = NULL;
	 
   if((AttachShm(0,(void **)&pInfoHead))<0)  //联入共享内存,取进程信息
   {
   	Log::log(0,"联入监控共享缓冲区不存在");
   	return -1;
   }
   
   pProcInfoHead = &(pInfoHead->ProcInfo);
   
   if(pProcInfoHead == NULL) return -1;
   
   for (int i=0; i<pInfoHead->iProcNum; i++) 
   {
   	
   	if(pProcInfoHead[i].iProcessID==iProcessId)
   	 {
   	 	 if (pProcInfoHead[i].iState==ST_RUNNING || pProcInfoHead[i].iState==ST_INIT)
   	 	 {
		      pProcInfoHead[i].iState = ST_WAIT_DOWN;
	        Log::log(0,"成功致标志位,进程 process_id=%d 停止!!",iProcessId);
	        return 0;
	     		
		   }
	   	 
	   }
	   
	   continue;
	   
	}
	
  return 0;	
}
コード例 #7
0
ファイル: process_f.cpp プロジェクト: xkmld419/crawl
int GetProcInfo ()
{
	struct tm *pre;
	long clock = 0;
	char sCPU[100], sMEM[100];
	char sProcName[PROCESS_NAME_LEN];   
	int iTmpBillFlowID=-1, iTmpProcessID=-1; //已经显示的最大ID
	
	int iTmpAppID = -1;
	int iSelecetdPos = -2;

	int iListPos=0;
	
	//  
	char tmp[128] = {0};
	int ret = 0;
	InitList();
/*
	Control *pEdit = GetCtlByID(process_handle, 13);
	gStr2Arr(pEdit->sData);	
    */
    g_iflowid[0] = 0;
	
	Control *pEdit1 = GetCtlByID(process_handle, 15);
	gStr2Appid(pEdit1->sData);

	DetachShm ();

	if (AttachShm (0, (void **)&pInfoHead) >= 0) {
	    pProcInfoHead = &pInfoHead->ProcInfo;
	} else {
	    return -1;
	}

	time ((time_t *)&clock);
	    
	memset(aiProcessID, 0, MAX_APP_NUM*sizeof(int));

   iSelecetdPos = -1;

	while (iListPos < pInfoHead->iProcNum)
	{
	    int iSelecetdPos = SearchNextNode(&iTmpBillFlowID, &iTmpProcessID,&iTmpAppID);
	    //iSelecetdPos=6;//= SearchNextNode(&iTmpBillFlowID, &iTmpProcessID,&iTmpAppID);
	 
	    if (iSelecetdPos < 0)
	        break;

	//
	//	if( g_iflowid[0] && iTmpBillFlowID != g_iflowid )
	//		continue;
	
			if( ((g_iflowid[0] && !IsInArr( iTmpBillFlowID )))||((g_iappid[0] && !IsInAppid( iTmpAppID ))) || 
				!(pProcInfoHead+iSelecetdPos)->iBillFlowID || !(pProcInfoHead+iSelecetdPos)->iProcessID )
				continue;
			
	    strncpy( sProcName, (pProcInfoHead+iSelecetdPos)->sName, PROCESS_NAME_LEN);
	    sProcName[PROCESS_NAME_LEN] ='\0';
	    
	    if ((pProcInfoHead+iSelecetdPos)->iState == ST_RUNNING) {
					memset(sCPU,0,sizeof(sCPU));
					memset(sMEM,0,sizeof(sMEM));
	        pre = localtime ((const time_t *)&(pProcInfoHead+iSelecetdPos)->lLoginTime);
	        GetSysProcInfo ((pProcInfoHead+iSelecetdPos)->iSysPID, sMEM, sCPU);
			memset( proc_list_data[iListPos],0,strlen(proc_list_data[iListPos]) );
	        sprintf (proc_list_data[iListPos], 
	        "%-4d %6d %-20s %02d%02d%02d%02d %11d %-4s %5s %3s%\0",
	        (pProcInfoHead+iSelecetdPos)->iAppID,
	        (pProcInfoHead+iSelecetdPos)->iProcessID,
	        sProcName, 
	        pre->tm_mon+1,
	        pre->tm_mday,
	        pre->tm_hour,
	        pre->tm_min,
	        (pProcInfoHead+iSelecetdPos)->iAllTickets,
	        gsState[(pProcInfoHead+iSelecetdPos)->iState], 
	        sMEM, 
	        sCPU
	        );
	    }
	    else {
	        sprintf (proc_list_data[iListPos], 
	        "%-4d %6d %-20s -------- %11d %-4s %5d %3d%\0",
	        (pProcInfoHead+iSelecetdPos)->iAppID,
	        (pProcInfoHead+iSelecetdPos)->iProcessID,
	        sProcName,
	        (pProcInfoHead+iSelecetdPos)->iAllTickets,
	        gsState[(pProcInfoHead+iSelecetdPos)->iState], 
	        0,
	        0
	        );
	    }
	    proc_list_index[iListPos] = proc_list_data[iListPos];
	    aiProcessID[iListPos] = (pProcInfoHead+iSelecetdPos)->iProcessID;
	    
	    iListPos++;

		//插入InfoList
		InfoList[ret] = pProcInfoHead+iSelecetdPos;

		
	    ret ++;
	    //iSelecetdPos = -1;
	}
	l_lprocnum = ret;
	return ret;
}