int main(int argc, char **argv) { time_t start; initServerConfig(); if (argc == 2) { resetServerSaveParams(); loadServerConfig(argv[1]); } if (server.daemonize) daemonize(); initServer(); linuxOvercommitMemoryWarning(); start = time(NULL); if (server.appendonly) { loadAppendOnlyFile(server.appendfilename); } else { rdbLoad(server.dbfilename); } aeSetBeforeSleepProc(server.el,beforeSleep); aeMain(server.el); aeDeleteEventLoop(server.el); return 0; }
int main(int argv, char *argc){ initServerConfig(); initServer(); if (server.ipfd > 0) redisLog(REDIS_NOTICE,"The server is now ready to accept connections on port %d", server.port); if (server.sofd > 0) redisLog(REDIS_NOTICE,"The server is now ready to accept connections at %s", server.unixsocket); // aeSetBeforeSleepProc(server.el,beforeSleep); aeMain(server.el); aeDeleteEventLoop(server.el); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { /* * * Load logging module * if error return process */ if(logging()) { log4c_category_log( log_handler, LOG4C_PRIORITY_FATAL, "sync: primary process startup -- failed"); return -1; } log4c_category_log( log_handler, LOG4C_PRIORITY_DEBUG, "sync: primary process startup -- successful"); /* *Load configure files *initate server */ if(initServerConfig()) { log4c_category_log( log_handler, LOG4C_PRIORITY_FATAL, "sync: initiate server configure -- failed"); return -3; } log4c_category_log( log_handler, LOG4C_PRIORITY_DEBUG, "sync: initiate server configure -- successful"); /* *Create daemon *if error return process */ if(xdaemon()) { log4c_category_log( log_handler, LOG4C_PRIORITY_FATAL, "sync: process into daemon state -- failed"); return -2; } log4c_category_log( log_handler, LOG4C_PRIORITY_DEBUG, "sync: process into daemon state -- successful"); /* *Create queue *store receiver item */ if(create_queue()) { log4c_category_log( log_handler, LOG4C_PRIORITY_FATAL, "sync: create queue -- failed"); return -4; } log4c_category_log( log_handler, LOG4C_PRIORITY_DEBUG, "sync: create queue -- successful"); /* *create dump file *when MySQL lost connect */ if(create_dump()) { log4c_category_log( log_handler, LOG4C_PRIORITY_FATAL, "sync: create dump file -- failed"); } log4c_category_log( log_handler, LOG4C_PRIORITY_DEBUG, "sync: create queue -- successful"); /* *Create some process include: *one receiver *many mysql-connector */ create_thread(); /* * Process never run to here */ return EXIT_SUCCESS; }
int main(int argc, char **argv) { if (3 != argc) { help(argc, argv); return -1; } int opt = -1; char configfile[MIN_BUFSZ] = ""; while ((opt = getopt(argc, argv, "c:")) != -1) { switch (opt) { case 'c': strcpy(configfile, optarg); break; default: help(argc, argv); return -1; } } initServerConfig(); if (-1 == loadServerConfig(configfile)) { return -1; } if (g_Server.daemonize) { daemonize(); } initServer(); if (g_Server.daemonize) { createPidFile(); } g_ListenThread = new ListenThread(); if (NULL == g_ListenThread) { myepollLog(MY_WARNING, "new ListenThread() err"); return -1; } if (-1 == g_ListenThread->Bind()) { kill(getpid(), SIGTERM); } myepollLog(MY_NOTICE, "Epoll server is running :) ... (press CTRL-C to stop)"); poll(NULL, 0, -1); return 0; }
int main (int argc, char **argv) { struct timeval tv; // 初始化相关环境变量与库 #ifdef INIT_SETPROCTITLE_REPLACEMENT spt_init(argc, argv); #endif // 设置当前的`locale`命令里的内容 setlocale(LC_COLLATE, ""); // 自动分配线程安全 zmalloc_enable_thread_safeness(); // 设置自动分配函数句柄(out of memory) zmalloc_set_oom_handler(redisOutOfMemoryHandler); // 时间异或pid生成随机数种子 srand(time(NULL) ^ getpid()); gettimeofday(&tv, NULL); // 设置字典hash值种子 dictSetHashFunctionSeed(tv.tv_sec ^ tv.tv_usec ^ getpid()); // 定点模式检测 server.sentinel_mode = checkForSentinelMode(argc, argv); // 初始化服务配置 initServerConfig(); // 定点模式处理 if (server.sentinel_mode) { printf("deal with sentinel mode\n"); } if (argc >= 2) { int j = 1; // init empty string sds options = sdsempty(); char *configfile = NULL; if (strcmp(argv[1], "-v") == 0 || strcmp(argv[1], "--version") == 0) version(); if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-h") == 0) usage(); if (strcmp(argv[1], "--test-memory") == 0) { if (argc == 3) { // 内存测试还未完全写完 memtest(atoi(argv[2]), 50); exit(0); } else { fprintf(stderr, "Please specify the amount of memory to test in megabytes.\n"); fprintf(stderr, "Example: ./redis-server --test-memory 4096\n\n"); exit(1); } } /* * 第一个参数为'--'开头, j始终为1 * 第一个参数不为'--'开头, j始终为2 * */ // j为1,第1个参数不是'--'开头的是配置文件 if (argv[j][0] != '-' || argv[j][1] != '-') { configfile = argv[j++]; } // 配置文件参数后还有内容 while (j != argc) { // 所有参数有包括'--'开头的参数 if (argv[j][0] == '-' && argv[j][1] == '-') { if (sdslen(options)) options = sdscat(options, "\n"); options = sdscat(options, " "); } else { // append new string, 转义特殊字符, return new pointer options = sdscatrepr(options, argv[j], strlen(argv[j])); options = sdscat(options, " "); } j++; } if (server.sentinel_mode && configfile && *configfile == '-') { printf("need redis log\n"); exit(1); } if (configfile) { server.configfile = getAbsolutePath(configfile); } resetServerSaveParams(); loadServerConfig(configfile, options); sdsfree(options); } else { printf("warning: no config file specified\n"); } // 后台模式 if (server.daemonize) { daemonize(); } // init server initServer(); printf("redis done\n"); return 0; }