int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) { if(argc > 0) { OUR_DEBUG((LM_INFO, "[main]argc = %d.\n", argc)); for(int i = 0; i < argc; i++) { OUR_DEBUG((LM_INFO, "[main]argc(%d) = %s.\n", argc, argv[i])); } } //首先设置当前工作路径 SetAppPath(); //读取配置文件 if(!App_MainConfig::instance()->Init()) { OUR_DEBUG((LM_INFO, "[main]%s\n", App_MainConfig::instance()->GetError())); } else { App_MainConfig::instance()->Display(); } //隐式加载PacketParse bool blState = App_PacketParseLoader::instance()->LoadPacketInfo(App_MainConfig::instance()->GetPacketParseInfo()->m_szPacketParseName); if(true == blState) { //判断是否是需要以服务的状态启动 if(App_MainConfig::instance()->GetServerType() == 1) { OUR_DEBUG((LM_INFO, "[main]Procress is run background.\n")); //daemon(1,1); Gdaemon(); } //判断当前并行连接数是否支持框架 //if(-1 == Checkfilelimit(App_MainConfig::instance()->GetMaxHandlerCount())) //{ // return 0; //} //判断当前Core文件尺寸是否需要调整 if(-1 == CheckCoreLimit(App_MainConfig::instance()->GetCoreFileSize())) { return 0; } //设置监控信号量的线程 WaitQuitSignal::init(); pthread_t tid; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_create(&tid, &attr, thread_Monitor, NULL); //第二步,启动主服务器监控 if(!App_ServerManager::instance()->Init()) { OUR_DEBUG((LM_INFO, "[main]App_ServerManager::instance()->Init() error.\n")); getchar(); } OUR_DEBUG((LM_INFO, "[CServerManager::Start]Begin.\n")); if(!App_ServerManager::instance()->Start()) { OUR_DEBUG((LM_INFO, "[main]App_ServerManager::instance()->Start() error.\n")); getchar(); } OUR_DEBUG((LM_INFO, "[main]Server Run is End.\n")); ACE_Time_Value tvSleep(2, 0); ACE_OS::sleep(tvSleep); OUR_DEBUG((LM_INFO, "[main]Server Exit.\n")); pthread_exit(NULL); } return 0; }
int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) { if(argc > 0) { OUR_DEBUG((LM_INFO, "[main]argc = %d.\n", argc)); for(int i = 0; i < argc; i++) { OUR_DEBUG((LM_INFO, "[main]argc(%d) = %s.\n", argc, argv[i])); } } //首先设置当前工作路径 SetAppPath(); //读取配置文件 if(!App_MainConfig::instance()->Init()) { OUR_DEBUG((LM_INFO, "[main]%s\n", App_MainConfig::instance()->GetError())); } else { App_MainConfig::instance()->Display(); } /* #ifndef WIN32 signal(SIGTERM, sig_term); #endif //WIN32 */ //判断当前并行连接数是否支持框架 if(-1 == Checkfilelimit(App_MainConfig::instance()->GetMaxHandlerCount())) { return 0; } //判断当前Core文件尺寸是否需要调整 if(-1 == CheckCoreLimit(App_MainConfig::instance()->GetCoreFileSize())) { return 0; } //判断是否是需要以服务的状态启动 if(App_MainConfig::instance()->GetServerType() == 1) { OUR_DEBUG((LM_INFO, "[main]Procress is run background.\n")); //ACE::daemonize(); //daemonize(); daemon(1,1); } //第二步,启动主服务器监控 if(!App_ServerManager::instance()->Init()) { OUR_DEBUG((LM_INFO, "[main]App_ServerManager::instance()->Init() error.\n")); getchar(); } if(!App_ServerManager::instance()->Start()) { OUR_DEBUG((LM_INFO, "[main]App_ServerManager::instance()->Start() error.\n")); getchar(); } OUR_DEBUG((LM_INFO, "[main]Server Run is End.\n")); ACE_Time_Value tvSleep(2, 0); ACE_OS::sleep(tvSleep); OUR_DEBUG((LM_INFO, "[main]Server Exit.\n")); return 0; }