📄 mm_main.c~
字号:
#include<gnome.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <sys/sem.h>#include<sys/stat.h>#include<sys/time.h>//setpriority#include<sys/resource.h>//setpriority#include<signal.h>#include <stdio.h>#include <unistd.h>#include<stdlib.h>#include<fcntl.h>#include<errno.h>#include<time.h>#include"sendto_ABcmd.h"//8060 8065#include"sendto_QT.h"//8020,8030#include"M_check_Mstate_bk.h"#include"share_mem.h"//#include"Check_Astate.h"//8040//#include"Check_Bstate.h"//8050#include"Check_Mstate.h"//sys_check//#include"Mserver_B_getdata.h"//8020//#include"Mserver_B_getdata_bk.h"//8030//#include"Mserver_A_getdata.h"//8000//#include"Mserver_A_getdata_bk.h"//8010#include"Mserver_getdata.h"//8000#include"Mserver_getdata_bk.h"//8010#include"Mserver_Acmd.h"//8070#include"Mserver_Acmd_bk.h"//8075//#include"Mserver_Bcmd.h"//8080//#include"Mserver_Bcmd_bk.h"//8085/*include windows*///#include "ILDATATYPE.h"#include"static_tab.h"#include "M_window.h"//#include "SearchID.h"//#include "Valid_oper.h"#include"popmenu.h"#include"bg.h"#include"SySInfo.h"#include"toggle.h"#include"sg.h"#include"switch.h"#include"field.h"#include"line.h"#include"text.h"#include"sig.h"#include"frame.h"//#include"echo_fd.h"#include"control_c.h"#define OBFILE "/proc/stat"#define LEN 16348#define NUM 6 #define FALSE_sg 0#define TRUE_sg 1int Okay;void sig_child() { signal(SIGCHLD, sig_child); Okay = FALSE_sg; }gint main(gint argc,gchar *argv[]){#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED) /* union semun is defined by including <sys/sem.h> */#else /* otherwise, according to X/OPEN we have to define it ourselves */ union semun { int val; /* value for SETVAL */ struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */ unsigned short int *array; /* array for GETALL, SETALL */ struct seminfo *__buf; /* buffer for IPC_INFO */ };#endif union semun un; int flag = (IPC_CREAT | IPC_EXCL | 0660); int size = sizeof(struct area); key_t skey = 0x00123001; /* sample keys */ key_t mkey = 0x00125451;// int semid; /* semaphore id */// int shmid; /* shared memory id */ int pid_Sys_check; /* Sys_check_state process child task pid */ int pid_server_cmd; /*Mserver_cmd process child task pid */// int pids[NUM]; int i; int pid; char inbuf[80]; /* get a shared memory area */ shmid=shmget(mkey, size, flag); /* attach the shared memory area */ ap=(struct area *)shmat(shmid, 0, 0); /* initialize account info in shared memory */ ap->Mstate_gl=1; ap->Astate_gl=1; ap->Bstate_gl=1; ap->Sys_main_cpu_gl=1; ap->Sys_main_hub_gl=1; ap->Mhost_name_gl="192.168.1.1"; ap->Ahost_name_gl="192.168.1.3"; ap->Bhost_name_gl="192.168.1.5"; ap->flag_sys_check=1; /* get and initialize a semaphore */ semid=semget(skey, 1, flag); /* set semaphore available */ un.val=1; semctl(semid, 0, SETVAL, un); /* first and only semaphore */ buf_sem.sem_num=0; /* wait if set */ buf_sem.sem_flg=0;/*init the window share memory A */ union semun un_win; int flag_win = (IPC_CREAT | IPC_EXCL | 0660); int size_win = sizeof(struct area_window); key_t skey_win = 0x00123020; /* sample keys */ key_t mkey_win = 0x00034511; /* get a shared memory area */ shmid_win=shmget(mkey_win, size_win, flag_win); /* attach the shared memory area */ aw=(struct area_window *)shmat(shmid_win, 0, 0); /* initialize account info in shared memory */ int j; aw->flag_revInfo=0;/*以下为初始化内存变量*/ aw->flag_sg=0; for(i=0;i<30;i++) { for(j=2;j<4;j++) aw->SgNode_DynTab[i][j]=0; } int sg=0x8000; for(i=0;i<30;i++) { aw->SgNode_DynTab[i][1]=0x01; aw->SgNode_DynTab[i][0]=sg++; } aw->SgNode_DynTab[10][1]=0x03; aw->SgNode_DynTab[11][1]=0x03; aw->SgNode_DynTab[20][1]=0x03;//flag_SG init for(i=0;i<25;i++) aw->flag_SG[i]=0; aw->flag_sw=0; int sw=0x4000; for(i=0;i<17;i++) { aw->SwNode_DynTab[i][0]=sw++; aw->SwNode_DynTab[i][1]=0xaa; aw->SwNode_DynTab[i][2]=0; aw->SwNode_DynTab[i][3]=0xaa; } aw->flag_fd=0; int fd=0x2000;for(i=0;i<25;i++) { aw->FdNode_DynTab[i][0]=fd++; aw->FdNode_DynTab[i][1]=0xaa; aw->FdNode_DynTab[i][2]=0; } /* get and initialize a semaphore */ semid_win=semget(skey_win, 1, flag_win); /* set semaphore available */ un_win.val=1; semctl(semid_win, 0, SETVAL, un_win); /* first and only semaphore */ buf_win.sem_num=0; /* wait if set */ buf_win.sem_flg=0; /* setup SIGCHLD handler */ signal(SIGINT,control_c); signal(SIGCHLD, sig_child);if((aw->pids[0]=fork())==0)//check_M { printf("\tsys_check is started up pid= %d\n",getpid()); sys_check(); }aw->pid_parent=aw->pids[0]-1;if((aw->pids[1]=fork())==0)//Mserver_getdata { printf("\tMserver_getdata is started up pid= %d\n",getpid()); Mserver_getdata(); }if((aw->pids[2]=fork())==0) //Mserver_getdata_bk { printf("\tMserver_getdata_bk is started up pid= %d\n",getpid()); Mserver_getdata_bk(); }//ifif((aw->pids[3]=fork())==0)//Mserver_Acmd { printf("\tMserver_Acmd is started up pid= %d\n",getpid()); Mserver_Acmd(); }if((aw->pids[4]=fork())==0)//Mserver_Acmd_bk { printf("\tMserver_Acmd_bk is started up pid= %d\n",getpid()); Mserver_Acmd_bk(); }if((aw->pids[5]=fork())==0)//Mserver_Acmd_bk { printf("\tMserver_Acmd_bk is started up pid= %d\n",getpid()); M_window(argc,argv); }//M_window(argc,argv);while(1){ Okay=TRUE_sg; while(Okay) /* pause */ usleep(1); pid=wait(NULL); /* exiting pid */ for(i=0;i<NUM;i++) { if(pid==aw->pids[i]) break; } printf("\tSubtask #%d ended, pid = %d\n", i, aw->pids[i]); switch(i) { case 0: { if((aw->pids[0]=fork())==0)//check_M { printf("\tsys_check is started up pid= %d\n",getpid()); sys_check(); } break; } case 1: { if((aw->pids[1]=fork())==0)//Mserver_getdata { printf("\tMserver_getdata is started up pid= %d\n",getpid()); Mserver_getdata(); } break; } case 2: { if((aw->pids[2]=fork())==0)//Mserver_getdata_bk { printf("\tMserver_getdata is started up pid= %d\n",getpid()); Mserver_getdata_bk(); } break; } case 3: { if((aw->pids[3]=fork())==0)//Mserver_Acmd { printf("\tMserver_Acmd is started up pid= %d\n",getpid()); Mserver_Acmd(); } break; } case 4: { if((aw->pids[4]=fork())==0)//Mserver_Acmd_bk { printf("\tMserver_Acmd_bk is started up pid= %d\n",getpid()); Mserver_Acmd_bk(); } break; } case 5: { if((aw->pids[5]=fork())==0)//Mserver_Acmd_bk { printf("\tMserver_Acmd_bk is started up pid= %d\n",getpid()); M_window(argc,argv); } break; } }//switch}//while(1) //waitpid(pid_Sys_check); /* remove shared memory, semaphore, and exit */ shmctl(shmid, IPC_RMID, (struct shmid_ds *) 0); semctl(semid, 0, IPC_RMID, un); return;}//main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -