int App::init(int argc, const char * argv[]){ int ret = on_create(argc, argv); if (ret){ GLOG_ERR("app check start error:%d !", ret); return -1; } ret = init_arguments(argc, argv, impl_, *this); if (ret){ GLOG_ERR("init argumets error :%d !", ret); return -1; } _app_reload_env(impl_); ////////////////////////////////////////////////////////////// const char * pidfile = cmdopt().getoptstr("pid-file"); //1.control command ret = init_command(*this, pidfile); if (ret){ if (ret < 0){ GLOG_ERR("control command init error:%d !", ret); return -1; } else { exit(0); } } //"start:n:S:start process normal mode;" if (!cmdopt().hasopt("start")){ exit(-1); } //2.daemonlization and pid running checking if (cmdopt().hasopt("daemon")){ daemonlize(1, 0, pidfile); } if (pidfile && getpid() != dcs::lockpidfile(pidfile)){ fprintf(stderr, "process should be unique running ..."); return -2; } init_signal(); ////////////////////////////////////////////////////////////// ret = init_facilities(*this, impl_); if (ret){ GLOG_ERR("init facilities error:%d !", ret); return -1; } GLOG_IFO("app framework init success !"); ////////////////////////////////////////////////////////////////////////////////// return on_init(); }
int main(int argc, char **argv) { std::string conf; int optch; extern char *optarg; char optstring[] = "hvc:"; while ((optch = getopt(argc, argv, optstring)) != -1) { switch (optch) { case 'h': usage(); exit(0); case 'v': printf("%s version: %s\n", "RDB", "1.0"); exit(0); case 'c': conf = optarg; break; default: break; } } printf("sizeof(RDBShm) = %d\n", sizeof(RDBShm)); if(conf.empty()){ printf("Configuration file is empty, using the default configuration\n"); loadDefConf(gRDBConf); }else{ if(loadConf(conf, gRDBConf) != 0){ printf("Fail to load configuration file is empty.\n"); exit(-1); } } if(gRDBConf.daemon) daemonlize(); //reg signal //create share memory //start route process //wait for all process done //start service return 0; }
int main(int argc, char* argv[]) { extern char *optarg; int optch; char optstring[] = "p:h"; g_prog_name = argv[0]; //读取命令行参数 while ((optch = getopt(argc, argv, optstring)) != -1) { switch (optch) { case 'h': usage(); exit(0); case 'p': g_run_name = optarg; break; default: usage(); exit(0); } } if (g_run_name.empty()) { printf("program file is empty.\n"); usage(); exit(0); } daemonlize(); srand(time(0)); service(); return 0; }