📄 ra.cpp
字号:
#include "CSysobj.h"#include "CUdpsocket.h"#include <pthread.h>#include <mysql/mysql.h>CSysobj ptrsys;CUdpsocket ptrudp;MYSQL mysql;pthread_mutex_t mutex;int mysqlerror;void* thread(void* j);void reconnectmysql();int isAddrPublic(const char *ipaddr);int main(){u_char sstr[256];pthread_t id;int ret,i;int j=0;pid_t pid;mysqlerror=0;for (i = 0; i < 32; i++) if (i != SIGKILL && i != SIGBUS && i != SIGALRM) signal (i, SIG_IGN);/*if((pid=fork()) == -1) { printf("Fork Error\n"); exit(0);} if(pid) exit(0); //parent process exit */ptrsys.init_eb_table();ptrudp.setServIP(ptrsys.getServAddr(0),ptrsys.getServPort(0));ptrudp.createsocket();if (!mysql_init (&mysql)){ ptrsys.write_log((u_char*)"init mysql Error"); exit(0);}if (!mysql_real_connect (&mysql,(char*)ptrsys.getSqlAddr(0),(char*)ptrsys.getSqlUser(0), (char*)ptrsys.getSqlPass(0),(char*)ptrsys.getSqldbname(0), 0, NULL, 0)){ sprintf((char*)sstr,"Failed to connect database: %s",(char*)mysql_error(&mysql)); ptrsys.write_log(sstr); exit(0);}pthread_mutex_init (&mutex,NULL);while(1){ if(mysqlerror) { pthread_mutex_lock (&mutex); mysqlerror=0; pthread_mutex_unlock (&mutex); } if(ptrsys.waitesem()==0) continue; if(pthread_create(&id,NULL,thread,(void *)&j)) { ptrsys.write_log((u_char*)"create thread error"); exit(0); }}}void* thread(void* arg){int k,len;int i,a,b,m;char sql[256];char str[128];char recvaddr[24];char tmpaddr[24];CONNECT_TYPE contype; int num,tmp;u_char ndata[MAXSIZE]; MYSQL_ROW m_row;MYSQL_RES *m_res;CPackage ptrpkg;k=*(int*)arg;while(1){ sprintf(str,"the latest fork_num is %d, k is %d",ptrsys.getForknum(),k); ptrsys.write_log((u_char *)str); memset(ndata,'\0',MAXSIZE); if(!k) k=1; else ptrsys.addsem(0); len=0; len=ptrudp.mrecv(ndata,recvaddr); ptrsys.decsem(0); //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -