int load_tranmap_cfg(char *filename) { int shmid,i=0; char buff[1200]; _tranmap *tmap=NULL; char *tmpbuf = NULL; size_t shmsize; FILE *fp=NULL; memset(buff,0,sizeof(buff)); /** init commmsg **/ shmsize=MAXTRANMAP*sizeof(_tranmap); if((shmid=getshmid(5,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取交易映射区共享内存失败\n"); return -1; } SysLog(LOG_SYS_SHOW,"开始加载交易映射区共享内存配置 \n"); tmap = (_tranmap *)shmat(shmid,NULL,0); if(tmap == NULL) { SysLog(LOG_SYS_ERR,"链接交易映射区共享内存失败\n"); return -1; } fp = fopen(filename,"r"); if(fp==NULL) { SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno)); shmdt(tmap); return -1; } while(fgets(buff,sizeof(buff),fp)!=NULL) { buff[strlen(buff)-1]='\0'; if(buff[0]=='#') { //cmsg++; continue; } if(buff[0]=='*') { strcpy(tmap->trancode,buff+1); tmap++; continue; } /** need if else **/ strcpy(tmap->trancode,strtok(buff,"^")); strcpy(tmap->tranname,strtok(NULL,"^")); strcpy(tmap->tranflow,strtok(NULL,"^")); tmap->timeout=atoi(strtok(NULL,"^")); tmap++; } shmdt(tmap); fclose(fp); SysLog(LOG_SYS_SHOW,"加载交易映射区共享内存配置成功 \n"); return 0; }
int unpack_xml(char *xmltype,char *filename) { int shmid = 0,i=0; xmlDocPtr doc; char loop[5]; memset(loop,0x00,sizeof(loop)); xmlNodePtr curNode; size_t shmsize = MAXXMLCFG*sizeof(_xmlcfg); /** 初始化循环path登记表 **/ for(i=0;i<100;i++) { memset(preg[i].path,0x00,sizeof(preg[i].path)); preg[i].loop=1; } if((shmid = getshmid(6,shmsize))==-1) { SysLog(LOG_APP_ERR,"获取XML报文配置区共享内存失败\n"); return -1; } if((xmlcfg = shmat(shmid,NULL,0))==(void *)-1) { SysLog(LOG_APP_ERR,"链接XML报文配置区共享内存失败\n"); return -1; } xmlKeepBlanksDefault(0); doc = xmlReadFile(filename,"UTF-8",XML_PARSE_RECOVER); if(doc == NULL) { SysLog(LOG_APP_ERR,"解析XML文件[%s]失败[%s]\n",filename,strerror(errno)); return -1; } curNode = xmlDocGetRootElement(doc); if(curNode == NULL) { SysLog(LOG_APP_ERR,"获取根节点失败\n"); xmlFreeDoc(doc); return -1; } if(prtvalue(curNode,xmltype)!=-1) { sprintf(loop,"%d",getmaxloop()); SysLog(LOG_APP_SHOW,"解包到变量成功,解包循环深度[%s]\n",loop); put_var_value("V_LOOP",strlen(loop)+1,1,loop); }else { SysLog(LOG_APP_ERR,"解包到变量失败\n"); } xmlFreeDoc(doc); xmlCleanupParser(); xmlMemoryDump(); shmdt(xmlcfg); return 0; }
int load_vardef_cfg(char *filename) { int shmid,i=0; char buff[1200]; _vardef *vardef=NULL; char *tmpbuf = NULL; size_t shmsize; FILE *fp=NULL; memset(buff,0,sizeof(buff)); /** init vardef **/ shmsize=MAXVARDEF*sizeof(_vardef); if((shmid=getshmid(4,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取交易定义表共享内存失败\n"); return -1; } SysLog(LOG_SYS_SHOW,"开始加载变量定义区共享内存配置 \n"); vardef = (_vardef *)shmat(shmid,NULL,0); if(vardef == NULL) { SysLog(LOG_SYS_ERR,"链接交易定义表共享内存失败\n"); return -1; } fp = fopen(filename,"r"); if(fp==NULL) { SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno)); shmdt(vardef); return -1; } while(fgets(buff,sizeof(buff),fp)!=NULL) { buff[strlen(buff)-1]='\0'; if(buff[0]=='#') { //cmsg++; continue; } /** need if else **/ strcpy(vardef->varname,strtok(buff,"^")); strcpy(vardef->varmark,strtok(NULL,"^")); strcpy(vardef->vartype,strtok(NULL,"^")); vardef->varlen=atoi(strtok(NULL,"^")); vardef++; } shmdt(vardef); fclose(fp); SysLog(LOG_SYS_SHOW,"加载变量定义区共享内存配置成功 \n"); return 0; }
static RIODesc *shm__open(RIO *io, const char *pathname, int rw, int mode) { if (!memcmp (pathname, "shm://", 6)) { RIOShm *shm = R_NEW (RIOShm); const char *ptr = pathname+6; shm->id = getshmid (ptr); shm->buf = shmat (shm->id, 0, 0); shm->fd = getshmfd (shm); shm->size = SHMATSZ; if (shm->fd != -1) { eprintf ("Connected to shared memory 0x%08x\n", shm->id); return r_io_desc_new (&r_io_plugin_shm, shm->fd, pathname, rw, mode, shm); } eprintf ("Cannot connect to shared memory (%d)\n", shm->id); free (shm); } return NULL; }
int load_xmlcfg(char *xmltype,char *filename) { _xmlcfg *xmlcfg = NULL; xmlDocPtr doc; xmlNodePtr curNode; int shmid = 0; size_t shmsize = MAXXMLCFG*sizeof(_xmlcfg); SysLog(LOG_SYS_SHOW,"开始加载XML定义区共享内存 \n"); if((shmid = getshmid(6,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取XML配置共享内存区失败\n"); return -1; } if((xmlcfg = shmat(shmid,NULL,0))==(void *)-1) { SysLog(LOG_SYS_ERR,"链接XML配置共享内存区失败\n"); return -1; } xmlKeepBlanksDefault(0); doc = xmlReadFile(filename,"UTF-8",XML_PARSE_RECOVER); if(doc == NULL) { SysLog(LOG_SYS_ERR,"解析文件[%s]失败:[%s]\n",filename,strerror(errno)); return -1; } curNode = xmlDocGetRootElement(doc); if(curNode == NULL) { SysLog(LOG_SYS_ERR,"获取[%s]根结点失败:[%s]\n",filename,strerror(errno)); xmlFreeDoc(doc); return -1; } insertcfg(curNode,xmlcfg,xmltype); xmlFreeDoc(doc); shmdt(xmlcfg); SysLog(LOG_SYS_SHOW,"加载XML配置成功\n"); return 0; }
int main(int argc,char *argv[] ) { /** 初始化全局共享内存前,先获取ups根路径 **/ if(setupshome()==-1) { printf("设置全局变量upshome错误,请检查UPSHOME环境变量是否设置\n"); return -1; } int shmid = 0,i=0; _servreg *sreg = NULL; size_t shmsize = MAXSERVREG*sizeof(_servreg); if((shmid = getshmid(7,shmsize))==-1) { printf("get serv shm id error\n"); return -1; } if((sreg = shmat(shmid,NULL,0))==NULL) { printf("shmat sreg error\n"); return -1; } printf("开始停止UPS服务进程.........\n"); for(i=0;(sreg+i)->servpid!=0;i++) { printf("开始停止:进程名称:%-30s\t进程类型:%-6s\t进程号:%ld\t进程状态:%-6s\t\n",(sreg+i)->chnlname,(sreg+i)->type,(sreg+i)->servpid,(sreg+i)->stat); kill((sreg+i)->servpid,9); } if(i==0) { printf("暂时无进程启动\n"); shmdt(sreg); return 0; } printf("停止UPS服务进程成功\n"); shmdt(sreg); return 0; }
int main(int argc, char *argv[]) { int display = SHMINFO | SEMINFO; int option = 0; unsigned int i = 0; int j = 0; char ch; int shmid, semid; int pshmid; int psemid; struct shmid_ds shmbuf; struct semid_ds sembuf; union semun { int val; struct semid_ds *buf; ushort *array; } semarg; semarg.buf = &sembuf; while(++j < argc) { if ( (argv[j][0] != '-') && (strlen(argv[j]) < 2) ) { usage(); return 1; } i = 0; while( ++i < strlen(argv[j])) { ch = argv[j][i]; switch(ch) { case 'm': display = SHMINFO; break; case 's': display = SEMINFO; break; case 'a': option = BIGGEST | CREATOR | OUTSTANDING | PID | TIME; break; case 'b': option |= BIGGEST; break; case 'c': option |= CREATOR; break; case 'o': option |= OUTSTANDING; break; case 'p': option |= PID; break; case 't': option |= TIME; break; case '?': usage(); return 1; default: usage(); return 1; } continue; } } if (display & SHMINFO) { printf("SHARED MEMORY:\n"); printf("T ID"); // if (option & CREATOR) // printf(" CREATOR CGROUP"); if (option & OUTSTANDING) printf(" NATTCH"); if (option & BIGGEST) printf(" SEGSZ"); if (option & PID) printf(" CPID LPID"); if (option & TIME) printf(" ATIME DTIME CTIME"); printf("\n"); pshmid = -1; for( ; ; ) { if ((shmid = getshmid(pshmid)) < 0) break; if (shmctl(shmid, IPC_STAT, &shmbuf) < 0) { printf("Error!! errno = %d\n", errno); break; } pshmid = shmid; printf("m %6d ",shmid); // if (option & CREATOR) // printf(""); if (option & OUTSTANDING) printf("%6d ", shmbuf.shm_nattch); if (option & BIGGEST) printf("%6d ", shmbuf.shm_segsz); if (option & PID) printf("%6d %6d ", shmbuf.shm_cpid, shmbuf.shm_lpid); if (option & TIME) { time_t currenttime; struct tm *tmshm; time(¤ttime); if (shmbuf.shm_atime !=0 ) { tmshm = localtime(&shmbuf.shm_atime); if ((currenttime - shmbuf.shm_atime) >= 86400 ) printf("%02d/%02d/%02d ", tmshm->tm_year % 100, tmshm->tm_mon + 1, tmshm->tm_mday); else printf("%02d:%02d:%02d ", tmshm->tm_hour, tmshm->tm_min, tmshm->tm_sec); } else printf(" "); if (shmbuf.shm_dtime !=0 ) { tmshm = localtime(&shmbuf.shm_dtime); if ((currenttime - shmbuf.shm_dtime) >= 86400 ) printf("%02d/%02d/%02d ", tmshm->tm_year % 100, tmshm->tm_mon + 1, tmshm->tm_mday); else printf("%02d:%02d:%02d ", tmshm->tm_hour, tmshm->tm_min, tmshm->tm_sec); } else printf(" "); if (shmbuf.shm_ctime != 0) { tmshm = localtime(&shmbuf.shm_ctime); if ((currenttime - shmbuf.shm_ctime) >= 86400 ) printf("%02d/%02d/%02d ", tmshm->tm_year % 100, tmshm->tm_mon + 1, tmshm->tm_mday); else printf("%02d:%02d:%02d ", tmshm->tm_hour, tmshm->tm_min, tmshm->tm_sec); } } printf("\n"); } } if (display & SEMINFO) { printf("\nSEMAPHORES:\n"); printf("T ID"); // if (option & CREATOR) // printf(" CREATOR CGROUP"); if (option & BIGGEST) printf(" NSEMS"); if (option & TIME) printf(" OTIME CTIME"); printf("\n"); psemid = -1; for( ; ; ) { if ((semid = getsemid(psemid)) < 0) break; if (semctl(semid, 0, IPC_STAT, semarg) < 0) { printf("Error!! errno = %d\n", errno); break; } psemid = semid; printf("s %6d ",semid); // if (option & CREATOR) // printf(""); if (option & BIGGEST) printf("%6d ",semarg.buf->sem_nsems); // if (option & PID) // printf(""); if (option & TIME) { struct tm *tmsem; time_t currenttime2; time(¤ttime2); if (semarg.buf->sem_otime != 0) { tmsem = localtime(&(semarg.buf->sem_otime)); if ((currenttime2 - semarg.buf->sem_otime) >= 86400 ) printf("%02d/%02d/%02d ", tmsem->tm_year % 100, tmsem->tm_mon + 1, tmsem->tm_mday); else printf("%02d:%02d:%02d ", tmsem->tm_hour, tmsem->tm_min, tmsem->tm_sec); } else printf(" "); if (semarg.buf->sem_ctime != 0) { tmsem = localtime(&(semarg.buf->sem_ctime)); if ((currenttime2 - semarg.buf->sem_ctime) >= 86400 ) printf("%02d/%02d/%02d ", tmsem->tm_year % 100, tmsem->tm_mon + 1, tmsem->tm_mday); else printf("%02d:%02d:%02d ", tmsem->tm_hour, tmsem->tm_min, tmsem->tm_sec); } } printf("\n"); } } return 0; }
int load_vardef_cfg(char *table) { int i=0,shmid = 0; _vardef *vardef=NULL; size_t shmsize; SysLog(LOG_SYS_SHOW,"开始装载变量定义配置表[%s]\n",table); /** init vardef **/ shmsize=MAXVARDEF*sizeof(_vardef); if((shmid=getshmid(4,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取交易定义配置共享内存失败\n"); return -1; } vardef = (_vardef *)shmat(shmid,NULL,0); if(vardef == NULL) { SysLog(LOG_SYS_ERR,"链接交易定义配置共享内存失败\n"); return -1; } sprintf(sql,"%s %s","select * from ",table); rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); if (rc != SQLITE_OK) { fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db)); sqlite3_close(db); return -1; } ncolumn = sqlite3_column_count(stmt); while (sqlite3_step(stmt) == SQLITE_ROW) { for(i = 0 ; i < ncolumn ; i++ ) { vtype = sqlite3_column_type(stmt , i); column_name = sqlite3_column_name(stmt , i); switch( vtype ) { case SQLITE_NULL: fprintf(stdout, "%s: null\n", column_name); break; case SQLITE_INTEGER: fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i)); break; case SQLITE_FLOAT: fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i)); break; case SQLITE_BLOB: /* arguably fall through... */ fprintf(stdout, "%s: BLOB\n", column_name); break; case SQLITE_TEXT: fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i)); break; default: fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db)); break; } if(i==1) { strcpy(vardef->varname,sqlite3_column_text(stmt,i)); } if(i==2) { strcpy(vardef->varmark,sqlite3_column_text(stmt,i)); } if(i==3) { strcpy(vardef->vartype,sqlite3_column_text(stmt,i)); } if(i==4) { vardef->varlen=sqlite3_column_int(stmt,i); } } vardef++; } shmdt(vardef); SysLog(LOG_SYS_SHOW,"装载变量定义配置表[%s]成功\n",table); return 0; }
int load_tranmap_cfg(char *table) { int i=0; _tranmap *tmap=NULL; size_t shmsize; int shmid=0; SysLog(LOG_SYS_SHOW,"开始装载交易映射配置表[%s]\n",table); /** init commmsg **/ shmsize=MAXTRANMAP*sizeof(_tranmap); if((shmid=getshmid(5,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取交易映射配置共享内存失败\n"); return -1; } tmap = (_tranmap *)shmat(shmid,NULL,0); if(tmap == NULL) { SysLog(LOG_SYS_ERR,"鏈接交易映射配置共享内存失败\n"); return -1; } sprintf(sql,"%s %s","select * from ",table); rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); if (rc != SQLITE_OK) { fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db)); sqlite3_close(db); return -1; } ncolumn = sqlite3_column_count(stmt); while (sqlite3_step(stmt) == SQLITE_ROW) { for(i = 0 ; i < ncolumn ; i++ ) { vtype = sqlite3_column_type(stmt , i); column_name = sqlite3_column_name(stmt , i); switch( vtype ) { case SQLITE_NULL: fprintf(stdout, "%s: null\n", column_name); break; case SQLITE_INTEGER: fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i)); break; case SQLITE_FLOAT: fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i)); break; case SQLITE_BLOB: /* arguably fall through... */ fprintf(stdout, "%s: BLOB\n", column_name); break; case SQLITE_TEXT: fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i)); break; default: fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db)); break; } if(i==1) { strcpy(tmap->trancode,sqlite3_column_text(stmt,i)); } if(i==2) { strcpy(tmap->tranname,sqlite3_column_text(stmt,i)); } if(i==3) { strcpy(tmap->tranflow,sqlite3_column_text(stmt,i)); } if(i==4) { tmap->timeout=sqlite3_column_int(stmt,i); } } tmap++; } shmdt(tmap); SysLog(LOG_SYS_SHOW,"装载交易映射配置表[%s]成功\n",table); return 0; }
int load_xmlcfg(char *xmltype,char *table) { int i = 0; _xmlcfg *xmlcfg = NULL; int shmid = 0; size_t shmsize = MAXXMLCFG*sizeof(_xmlcfg); SysLog(LOG_SYS_SHOW,"开始装载XML配置表[%s]\n",table); if((shmid = getshmid(6,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取XML配置共享内存失败\n"); return -1; } if((xmlcfg = shmat(shmid,NULL,0))==(void *)-1) { SysLog(LOG_SYS_ERR,"链接XML配置共享内存失败\n"); return -1; } sprintf(sql,"%s %s","select * from ",table); rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); if (rc != SQLITE_OK) { fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db)); sqlite3_close(db); return -1; } ncolumn = sqlite3_column_count(stmt); while (sqlite3_step(stmt) == SQLITE_ROW) { for(i = 0 ; i < ncolumn ; i++ ) { vtype = sqlite3_column_type(stmt , i); column_name = sqlite3_column_name(stmt , i); switch( vtype ) { case SQLITE_NULL: fprintf(stdout, "%s: null\n", column_name); break; case SQLITE_INTEGER: fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i)); break; case SQLITE_FLOAT: fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i)); break; case SQLITE_BLOB: /* arguably fall through... */ fprintf(stdout, "%s: BLOB\n", column_name); break; case SQLITE_TEXT: fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i)); break; default: fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db)); break; } if(i==1) strcpy(xmlcfg->xmlname,sqlite3_column_text(stmt,i)); if(i==2) strcpy(xmlcfg->mark,sqlite3_column_text(stmt,i)); if(i==3) strcpy(xmlcfg->fullpath,sqlite3_column_text(stmt,i)); if(i==4) strcpy(xmlcfg->varname,sqlite3_column_text(stmt,i)); if(i==5) strcpy(xmlcfg->isneed,sqlite3_column_text(stmt,i)); if(i==6) strcpy(xmlcfg->sign,sqlite3_column_text(stmt,i)); if(i==7) strcpy(xmlcfg->loop,sqlite3_column_text(stmt,i)); if(i==7) xmlcfg->depth=sqlite3_column_int(stmt,i); } xmlcfg++; } shmdt(xmlcfg); SysLog(LOG_SYS_SHOW,"装载XML配置表[%s]成功\n",table); return 0; }
int load_flow_cfg(char *table) { key_t key; int i=0,shmid; _flow *flow=NULL; size_t shmsize; /** init commmsg **/ shmsize=MAXFLOW*sizeof(_flow); if((shmid=getshmid(8,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取流程配置共享内存失败\n"); return -1; } SysLog(LOG_SYS_SHOW,"开始装载流程配置表[%s]\n",table); flow = (_flow *)shmat(shmid,NULL,0); if(flow == NULL) { SysLog(LOG_SYS_ERR,"链接流程配置共享内存失败\n"); return -1; } sprintf(sql,"%s %s","select * from ",table); rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); if (rc != SQLITE_OK) { fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db)); sqlite3_close(db); return -1; } ncolumn = sqlite3_column_count(stmt); while (sqlite3_step(stmt) == SQLITE_ROW) { for(i = 0 ; i < ncolumn ; i++ ) { vtype = sqlite3_column_type(stmt , i); column_name = sqlite3_column_name(stmt , i); switch( vtype ) { case SQLITE_NULL: fprintf(stdout, "%s: null\n", column_name); break; case SQLITE_INTEGER: fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i)); break; case SQLITE_FLOAT: fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i)); break; case SQLITE_BLOB: /* arguably fall through... */ fprintf(stdout, "%s: BLOB\n", column_name); break; case SQLITE_TEXT: fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i)); break; default: fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db)); break; } if(i==1) strcpy(flow->flowname,sqlite3_column_text(stmt,i)); if(i==2) strcpy(flow->flowmark,sqlite3_column_text(stmt,i)); if(i==3) strcpy(flow->flowso,sqlite3_column_text(stmt,i)); if(i==4) strcpy(flow->flowfunc,sqlite3_column_text(stmt,i)); if(i==5) strcpy(flow->funcpar1,sqlite3_column_text(stmt,i)); if(i==6) strcpy(flow->errflow,sqlite3_column_text(stmt,i)); } flow++; } shmdt(flow); SysLog(LOG_SYS_SHOW,"装载流程配置表[%s]成功\n",table); return 0; }
int load_commmsg_cfg(char *table) { key_t key; int shmid,i=0; _commmsg *cmsg=NULL; size_t shmsize; /** init commmsg **/ shmsize=MAXCOMMMSG*sizeof(_commmsg); if((shmid=getshmid(9,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取共享内存失败\n"); return -1; } SysLog(LOG_SYS_SHOW,"开始加载配置文件\n"); cmsg = (_commmsg *)shmat(shmid,NULL,0); if(cmsg == NULL) { SysLog(LOG_SYS_ERR,"链接共享内存失败\n"); return -1; } sprintf(sql,"%s %s","select * from ",table); rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); if (rc != SQLITE_OK) { fprintf(stderr, "%s : %s\n", sql, sqlite3_errmsg(db)); sqlite3_close(db); return -1; } ncolumn = sqlite3_column_count(stmt); while (sqlite3_step(stmt) == SQLITE_ROW) { for(i = 0 ; i < ncolumn ; i++ ) { vtype = sqlite3_column_type(stmt , i); column_name = sqlite3_column_name(stmt , i); switch( vtype ) { case SQLITE_NULL: fprintf(stdout, "%s: null\n", column_name); break; case SQLITE_INTEGER: fprintf(stdout, "%s: %d\n", column_name,sqlite3_column_int(stmt,i)); break; case SQLITE_FLOAT: fprintf(stdout, "%s: %f\n", column_name,sqlite3_column_double(stmt,i)); break; case SQLITE_BLOB: /* arguably fall through... */ fprintf(stdout, "%s: BLOB\n", column_name); break; case SQLITE_TEXT: fprintf(stdout, "%s: %s\n", column_name,sqlite3_column_text(stmt,i)); break; default: fprintf(stdout, "%s: ERROR [%s]\n", column_name, sqlite3_errmsg(db)); break; } if(i==1) { strcpy(cmsg->commname,sqlite3_column_text(stmt,i)); } if(i==2) { cmsg->len=sqlite3_column_int(stmt,i); } if(i==3) { strcpy(cmsg->commvar,sqlite3_column_text(stmt,i)); } if(i==4) { strcpy(cmsg->commmark,sqlite3_column_text(stmt,i)); } } cmsg++; } SysLog(LOG_SYS_SHOW,"加载配置文件成功\n"); shmdt(cmsg); return 0; }
int setsysparam(void) { _sys_param *sp = NULL; size_t shmsize; int ret=-1,loop=0; FILE *fp = NULL; char filepath[100]; char tmpbuf[100]; memset(filepath,0x00,sizeof(filepath)); memset(tmpbuf,0x00,sizeof(tmpbuf)); shmsize = sizeof(_sys_param)*3; int shmid,isfound = 0; if((shmid=getshmid(3,shmsize))==-1) { printf("FILE [%s] LINE[%d] 获取系统公用共享内存失败:%s\n",__FILE__,__LINE__,strerror(errno)); return -1; } sp = (_sys_param *)shmat(shmid,NULL,0); if(sp == NULL) { printf("FILE [%s] LINE[%d] 链接系统公用共享内存失败:%s\n",__FILE__,__LINE__,strerror(errno)); return -1; } sprintf(filepath,"%s/%s",upshome,"/cfg/sys.cfg"); fp = fopen(filepath,"r"); if(fp == NULL) { printf("FILE [%s] LINE[%d] 打开[%s]配置失败:%s\n",__FILE__,__LINE__,filepath,strerror(errno)); shmdt(sp); return -1; } while(fgets(tmpbuf,sizeof(tmpbuf),fp)!=NULL) { if(tmpbuf[0]=='#') continue; if(!memcmp(tmpbuf,"SYSLOGLEVEL",11)) { isfound = 1; memcpy((sp+loop)->type,tmpbuf,3); (sp+loop)->curloglvl=atoi(tmpbuf+12); ret = (sp+loop)->curloglvl; loop++; printf("FILE [%s] LINE [%d]:设置SYSLOGLEVEL成功,当前系统日志级别为[%d]\n",__FILE__,__LINE__,ret); } if(!memcmp(tmpbuf,"CHNLLOGLEVEL",12)) { isfound = 1; memcpy((sp+loop)->type,tmpbuf,4); (sp+loop)->curloglvl=atoi(tmpbuf+13); ret = (sp+loop)->curloglvl; loop++; printf("FILE [%s] LINE [%d]:设置CHNLLOGLEVEL成功,当前渠道日志级别为[%d]\n",__FILE__,__LINE__,ret); } if(!memcmp(tmpbuf,"APPLOGLEVEL",11)) { isfound = 1; memcpy((sp+loop)->type,tmpbuf,3); (sp+loop)->curloglvl=atoi(tmpbuf+12); ret = (sp+loop)->curloglvl; loop++; printf("FILE [%s] LINE [%d]:设置APPLOGLEVEL成功,当前应用日志级别为[%d]\n",__FILE__,__LINE__,ret); } } if(isfound ==0) { printf("FILE [%s] LINE[%d] sys.cfg中未配置LOGLEVEL:%s\n",__FILE__,__LINE__,strerror(errno)); } fclose(fp); shmdt(sp); return ret; }
int load_flow_cfg(char *filename) { key_t key; int shmid,i=0; char buff[2000]; char flowname[60]; _flow *flow=NULL; char *tmpbuf = NULL; size_t shmsize; FILE *fp=NULL; memset(buff,0,sizeof(buff)); memset(flowname,0,sizeof(flowname)); /** init commmsg **/ shmsize=MAXFLOW*sizeof(_flow); if((shmid=getshmid(8,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取流程定义区共享内存失败\n"); return -1; } SysLog(LOG_SYS_SHOW,"开始加载流程定义区共享内存 \n"); flow = (_flow *)shmat(shmid,NULL,0); if(flow == NULL) { SysLog(LOG_SYS_ERR,"链接流程定义区共享内存失败\n"); return -1; } fp = fopen(filename,"r"); if(fp==NULL) { SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno)); shmdt(flow); return -1; } while(fgets(buff,sizeof(buff),fp)!=NULL) { buff[strlen(buff)-1]='\0'; if(buff[0]=='*') { strcpy(flowname,buff+1); strcpy(flow->flowname,flowname); flow++; memset(buff,0,sizeof(buff)); continue; } if(buff[0]=='#') { // flow++; memset(buff,0,sizeof(buff)); continue; } if(buff[0]=='@') { memset(flowname,0,sizeof(flowname)); strcpy(flow->flowname,"over"); strcpy(flow->flowmark," "); strcpy(flow->flowso," "); strcpy(flow->flowfunc," "); strcpy(flow->funcpar1," "); flow++; continue; } /** need if else **/ strcpy(flow->flowname,flowname); strcpy(flow->flowmark,strtok(buff,"^")); strcpy(flow->flowso,strtok(NULL,"^")); strcpy(flow->flowfunc,strtok(NULL,"^")); strcpy(flow->funcpar1,strtok(NULL,"^")); strcpy(flow->errflow,strtok(NULL,"^")); flow++; memset(buff,0,sizeof(buff)); } shmdt(flow); fclose(fp); SysLog(LOG_SYS_SHOW,"加载流程配置成功\n"); return 0; }
int load_commmsg_cfg(char *filename) { key_t key; int shmid,i=0; char buff[1200]; char cname[60]; _commmsg *cmsg=NULL; char *tmpbuf = NULL; size_t shmsize; FILE *fp=NULL; memset(buff,0,sizeof(buff)); memset(cname,0,sizeof(cname)); /** init commmsg **/ shmsize=MAXCOMMMSG*sizeof(_commmsg); if((shmid=getshmid(9,shmsize))==-1) { SysLog(LOG_SYS_ERR,"获取渠道通信区共享内存失败\n"); return -1; } SysLog(LOG_SYS_SHOW,"开始加载渠道通信区配置 \n"); cmsg = (_commmsg *)shmat(shmid,NULL,0); if(cmsg == NULL) { SysLog(LOG_SYS_ERR,"链接渠道通信区共享内存失败\n"); return -1; } fp = fopen(filename,"r"); if(fp==NULL) { SysLog(LOG_SYS_ERR,"打开文件[%s]失败[%s]\n",filename,strerror(errno)); shmdt(cmsg); return -1; } while(fgets(buff,sizeof(buff),fp)!=NULL) { buff[strlen(buff)-1]='\0'; if(buff[0]=='*') { strcpy(cname,buff+1); strcpy(cmsg->commname,cname); //cmsg++; //memset(buff,0,sizeof(buff)); continue; } if(buff[0]=='#') { //cmsg++; continue; } if(buff[0]=='@') { memset(cname,0,sizeof(cname)); strcpy(cmsg->commname,"over"); cmsg->len=0; strcpy(cmsg->commvar," "); strcpy(cmsg->commmark," "); cmsg++; continue; } /** need if else **/ strcpy(cmsg->commname,cname); strcpy(cmsg->commmark,strtok(buff,"^")); cmsg->len=atoi(strtok(NULL,"^")); strcpy(cmsg->commvar,strtok(NULL,"^")); cmsg++; } shmdt(cmsg); fclose(fp); SysLog(LOG_SYS_SHOW,"加载渠道通信区配置成功\n"); return 0; }