bool ContextBase::testCmdArgs(int argc, char **argv) { _argc = argc; _argv = argv; _skipFirstArgs = 1; _origProgramName = argv[0]; setProgram(_programNames[_origProgramName]); _argsProcessed.resize(_argc - _skipFirstArgs, false); if (!parseCmdArgs(argc, argv, 1) || getShowHelp() || !isValidState()) { return false; } return true; }
bool ContextBase::testCmdArgs(int argc, char **argv) { _argc = argc; _argv = argv; _skipFirstArgs = 1; setProgram(_programNames[argv[0]]); _argsProcessed.resize(_argc - _skipFirstArgs, false); if (!parseCmdArgs(argc, argv, 1) || getShowHelp() || !isValidState()) { if (!_errorMsg.empty()) { cerr <<_errorMsg << endl; } return false; } return true; }
DrachtioController::DrachtioController( int argc, char* argv[] ) : m_bDaemonize(false), m_bLoggingInitialized(false), m_configFilename(DEFAULT_CONFIG_FILENAME) { if( !parseCmdArgs( argc, argv ) ) { usage() ; exit(-1) ; } m_Config = boost::make_shared<DrachtioConfig>( m_configFilename.c_str() ) ; if( !m_Config->isValid() ) { exit(-1) ; } this->installConfig() ; #ifdef DEBUG json_set_alloc_funcs(my_json_malloc, my_json_free); #endif }
int main( int argc, char** argv ) { #ifdef WIN32 if( (signal(SIGINT,sig_int) == SIG_ERR) || (signal(SIGTERM,sig_int) == SIG_ERR) ) exit(-1); #else if( (signal(SIGINT,sig_int) == SIG_ERR) || (signal(SIGTERM,sig_int) == SIG_ERR) || (signal(SIGABRT,sig_int_nothing) == SIG_ERR)) exit(-1); if(signal(SIGTERM, sig_int) == SIG_ERR) exit(-1); #endif try { #ifndef WIN32 //频繁的内存申请/释放导致大量缺页中断 mallopt(M_MMAP_MAX, 0); // 禁止malloc调用mmap分配内存 mallopt(M_TRIM_THRESHOLD, -1); // 禁止内存紧缩 #endif CThreadFactory::initialize(); CCException::initStackTrace(); parseCmdArgs(argc,argv); if ( !initFrameWorkLib(argv[0]) ) ThrowException<CCException>("init FrameWorkLib Error!"); g_DaServer = CDAServerPtr::createInstance(); if( !g_DaServer->init(getFrameWorkProf()) ) { log_error("Failed to call DAServer::init() \n"); return -1; } g_DaServer->setArg(argc, argv); g_pSystemLog = new CSystemLog(); const char* logdir = NULL; if ( !getCmdArgs('l',logdir) ) logdir = "./log"; //写本地文件 g_pSystemLogOut = new CSystemLogOutputStream(logdir); if ( !g_pSystemLogOut->init(g_DaServer) ) ThrowException<CCException>("init CLocalLogOutputStream Error!"); g_pSystemLog->addFileLogOutput(g_pSystemLogOut.get()); g_pSystemLog->setLogPath(logdir); g_pSystemLogOut->start(); g_pDllMgr = new CProgramDllMgr(); const char* szdll = NULL; if ( !getCmdArgs('d',szdll) ) ThrowException<CCException>("init dll Error!"); g_pDllMgr->loadDll(szdll); g_DaServer->registeTimeTask(g_pDllMgr.get(),0,0,100 * 1000); g_DaServer->addSessionHandler(new CSessionHandler()); g_DaServer->setServerHandler(new CServerHandler()); if (!g_DaServer->initService()) { log_error("Failed to call DAServer::initService() \n"); return -1; } //记录加载完成标志 #ifndef WINDOWS uint16 npid = getpid(); char buffer[255] ={ 0 }; sprintf(buffer, "%s/%d.loadfinish", logdir, npid); FILE *logfile = NULL; if ((logfile = fopen(buffer, "a")) != NULL) { fclose(logfile); } #endif g_DaServer->run(); } catch(CDAException& e) { log_warning("Catch CDAException %s", e.printStackTrace()); if ( g_DaServer != NULL ) g_DaServer->stop(); if (g_pDllMgr != NULL) { g_pDllMgr->stopServer(); g_pDllMgr->onServerStop(); } if (g_pSystemLogOut != NULL) g_pSystemLogOut->stop(); uninitFrameWorkLib(); CCException::cleanupStackTrace(); return -1; } catch (CCException& e) { log_warning("catch ccexception[%s][%s]",e.what(), e.printStackTrace()); if ( g_DaServer != NULL ) g_DaServer->stop(); if (g_pDllMgr != NULL) { g_pDllMgr->stopServer(); g_pDllMgr->onServerStop(); } if (g_pSystemLogOut != NULL) g_pSystemLogOut->stop(); uninitFrameWorkLib(); CCException::cleanupStackTrace(); return -1; } catch (exception &e) { log_warning("catch exception[%s]",e.what()); if ( g_DaServer != NULL ) g_DaServer->stop(); if (g_pDllMgr != NULL) { g_pDllMgr->stopServer(); g_pDllMgr->onServerStop(); } if (g_pSystemLogOut != NULL) g_pSystemLogOut->stop(); uninitFrameWorkLib(); CCException::cleanupStackTrace(); return -1; } catch(...) { log_warning("catch ..."); if(g_DaServer != NULL) g_DaServer->stop(); if (g_pDllMgr != NULL) { g_pDllMgr->stopServer(); g_pDllMgr->onServerStop(); } if (g_pSystemLogOut != NULL) g_pSystemLogOut->stop(); uninitFrameWorkLib(); CCException::cleanupStackTrace(); return -1; } if (g_pDllMgr != NULL) { g_pDllMgr->stopServer(); } log_info("Program End!"); if (g_pSystemLogOut != NULL) g_pSystemLogOut->stop(); uninitFrameWorkLib(); CCException::cleanupStackTrace(); return 0; }
int main(int argc, char **argv) { std::string *flagValues; //Holds values passed from the cmd line std::ifstream inputFile; std::ofstream outputFile; try { //STEP 1: PROCESS COMMAND LINE ARGUMENTS //Parses the cmd args flagValues = parseCmdArgs(argc, argv); //TODO: Fills in unspecified flags with default values //STEP 2: CLEAN THE SOURCE FILE //Opens the files inputFile.open(flagValues[NUM_FLAGS]); outputFile.open(flagValues[CLEAN_FILE_FLAG]); if(!inputFile.is_open()); //throw an error if(!outputFile.is_open()); //throw an error //Initializes the cleaner object and CodeCleaner cleaner("~~", "/~", "~/"); cleaner.clean(inputFile, outputFile); //Closes the files inputFile.close(); outputFile.close(); //STEP 3: TOKENIZE THE CLEANED INPUT //Gets the list of keywords are their tokens std::vector<std::pair<std::string, std::string>> keywords = getKeywords(KW_FILE); //Opens the files inputFile.open(flagValues[CLEAN_FILE_FLAG]); outputFile.open(flagValues[TOKEN_FILE_FLAG]); if(!inputFile.is_open()); //throw an error if(!outputFile.is_open()); //throw an error //Initializes the tokenizer object and tokenizes the clean file ProseTokenizer tokenizer(keywords); tokenizer.tokenize(inputFile, outputFile); //STEP 4: CREATE PARSE TREES AND CONVERT THEM TO ASSEMBLY } catch(std::regex_error e) { std::cout << "regex_error code: " << e.code() << std::endl; } catch(std::exception& e) { std::cout << e.what() << std::endl; } //Frees dynamically allocated memory delete[] flagValues; //Closes all files inputFile.close(); outputFile.close(); return 0; }