bool StatFormBase::ConnectGuardMain() { DetachShm (); if (AttachShm (0, (void **)&pInfoHead) >= 0) { pProcInfoHead = &pInfoHead->ProcInfo; } else { return false; } return true; }
//连接共享内存 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; }
int destroy_loop(struct loopbuf* loop){ //free(loop->p); DetachShm(loop); return 1; }
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; }