/* Entry point */ int main(int argc, char **argv) { /* Init debugging level */ mem_allocated = 0; debug = 0; /* * Parse command line and set debug level. * bits 0..7 reserved by main.c */ parse_cmdline(argc, argv); openlog(PROG, LOG_PID | ((debug & 1) ? LOG_CONS : 0), log_facility); log_message(LOG_INFO, "Starting " VERSION_STRING); /* Check if keepalived is already running */ if (keepalived_running(daemon_mode)) { log_message(LOG_INFO, "daemon is already running"); goto end; } if (debug & 1) enable_console_log(); /* daemonize process */ if (!(debug & 2)) xdaemon(0, 0, 0); /* write the father's pidfile */ if (!pidfile_write(main_pidfile, getpid())) goto end; #ifndef _DEBUG_ /* Signal handling initialization */ signal_init(); #endif /* Create the master thread */ master = thread_make_master(); /* Init daemon */ start_keepalived(); #ifndef _DEBUG_ /* Launch the scheduling I/O multiplexer */ launch_scheduler(); /* Finish daemon process */ stop_keepalived(); #endif /* * Reached when terminate signal catched. * finally return from system */ end: closelog(); exit(0); }
/* Become a daemon (child of init) and * "cd" to the LogFile directory (if one is configured) */ static void _daemonize(void) { if (xdaemon()) error("daemon(): %m"); log_alter(log_opts, LOG_DAEMON, slurmdbd_conf->log_file); }
/* Entry point */ int main(int argc, char **argv) { int report_stopped = true; /* Init debugging level */ debug = 0; /* Initialise daemon_mode */ __set_bit(DAEMON_VRRP, &daemon_mode); __set_bit(DAEMON_CHECKERS, &daemon_mode); /* * Parse command line and set debug level. * bits 0..7 reserved by main.c */ parse_cmdline(argc, argv); openlog(PROG, LOG_PID | ((__test_bit(LOG_CONSOLE_BIT, &debug)) ? LOG_CONS : 0) , log_facility); #ifdef GIT_COMMIT log_message(LOG_INFO, "Starting %s, git commit %s", VERSION_STRING, GIT_COMMIT); #else log_message(LOG_INFO, "Starting %s", VERSION_STRING); #endif /* Check if keepalived is already running */ if (keepalived_running(daemon_mode)) { log_message(LOG_INFO, "daemon is already running"); report_stopped = false; goto end; } if (__test_bit(LOG_CONSOLE_BIT, &debug)) enable_console_log(); /* daemonize process */ if (!__test_bit(DONT_FORK_BIT, &debug)) xdaemon(0, 0, 0); /* write the father's pidfile */ if (!pidfile_write(main_pidfile, getpid())) goto end; #ifndef _DEBUG_ /* Signal handling initialization */ signal_init(); #endif /* Create the master thread */ master = thread_make_master(); /* Init daemon */ start_keepalived(); #ifndef _DEBUG_ /* Launch the scheduling I/O multiplexer */ launch_scheduler(); /* Finish daemon process */ stop_keepalived(); #endif /* * Reached when terminate signal catched. * finally return from system */ end: if (report_stopped) { #ifdef GIT_COMMIT log_message(LOG_INFO, "Stopped %s, git commit %s", VERSION_STRING, GIT_COMMIT); #else log_message(LOG_INFO, "Stopped %s", VERSION_STRING); #endif } closelog(); exit(0); }
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; }
/* Entry point */ int main(int argc, char **argv) { int report_stopped = true; /* Init debugging level */ debug = 0; /* Initialise daemon_mode */ __set_bit(DAEMON_VRRP, &daemon_mode); __set_bit(DAEMON_CHECKERS, &daemon_mode); /* * Parse command line and set debug level. * bits 0..7 reserved by main.c */ parse_cmdline(argc, argv); openlog(PROG, LOG_PID | ((__test_bit(LOG_CONSOLE_BIT, &debug)) ? LOG_CONS : 0) , log_facility); #ifdef GIT_COMMIT log_message(LOG_INFO, "Starting %s, git commit %s", VERSION_STRING, GIT_COMMIT); #else log_message(LOG_INFO, "Starting %s", VERSION_STRING); #endif #ifdef _MEM_CHECK_ mem_log_init(PROG); #endif /* Handle any core file requirements */ core_dump_init(); /* Check if keepalived is already running */ if (keepalived_running(daemon_mode)) { log_message(LOG_INFO, "daemon is already running"); report_stopped = false; goto end; } if (__test_bit(LOG_CONSOLE_BIT, &debug)) enable_console_log(); /* daemonize process */ if (!__test_bit(DONT_FORK_BIT, &debug)) xdaemon(0, 0, 0); /* Check we can read the configuration file(s). NOTE: the working directory will be / if we forked, but will be the current working directory when keepalived was run if we haven't forked. This means that if any config file names are not absolute file names, the behaviour will be different depending on whether we forked or not. */ if (!check_conf_file(conf_file)) goto end; /* write the father's pidfile */ if (!pidfile_write(main_pidfile, getpid())) goto end; #ifndef _DEBUG_ /* Signal handling initialization */ signal_init(); #endif /* Create the master thread */ master = thread_make_master(); /* Init daemon */ start_keepalived(); #ifndef _DEBUG_ /* Launch the scheduling I/O multiplexer */ launch_scheduler(); /* Finish daemon process */ stop_keepalived(); #endif /* * Reached when terminate signal catched. * finally return from system */ end: if (report_stopped) { #ifdef GIT_COMMIT log_message(LOG_INFO, "Stopped %s, git commit %s", VERSION_STRING, GIT_COMMIT); #else log_message(LOG_INFO, "Stopped %s", VERSION_STRING); #endif } /* Restore original core_pattern if necessary */ if (orig_core_dump_pattern) update_core_dump_pattern(orig_core_dump_pattern); closelog(); exit(0); }
/* Command line parser */ static void parse_cmdline(int argc, char **argv) { int c; struct option long_options[] = { {"use-file", required_argument, 0, 'f'}, {"vrrp", no_argument, 0, 'P'}, {"check", no_argument, 0, 'C'}, {"log-console", no_argument, 0, 'l'}, {"log-detail", no_argument, 0, 'D'}, {"log-facility", required_argument, 0, 'S'}, {"release-vips", no_argument, 0, 'X'}, {"dont-release-vrrp", no_argument, 0, 'V'}, {"dont-release-ipvs", no_argument, 0, 'I'}, {"dont-respawn", no_argument, 0, 'R'}, {"dont-fork", no_argument, 0, 'n'}, {"dump-conf", no_argument, 0, 'd'}, {"pid", required_argument, 0, 'p'}, {"vrrp_pid", required_argument, 0, 'r'}, {"checkers_pid", required_argument, 0, 'c'}, #ifdef _WITH_SNMP_ {"snmp", no_argument, 0, 'x'}, #endif {"version", no_argument, 0, 'v'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; #ifdef _WITH_SNMP_ while ((c = getopt_long(argc, argv, "vhlndVIDRS:f:PCp:c:r:x", long_options, NULL)) != EOF) { #else while ((c = getopt_long(argc, argv, "vhlndVIDRS:f:PCp:c:r:", long_options, NULL)) != EOF) { #endif switch (c) { case 'v': fprintf(stderr, VERSION_STRING); exit(0); break; case 'h': usage(argv[0]); exit(0); break; case 'l': debug |= DBG_OPT_LOG_CONSOLE; break; case 'n': debug |= DBG_OPT_DONT_FORK; break; case 'd': debug |= DBG_OPT_DUMP_CONF; break; case 'V': debug |= DBG_OPT_DONT_RELEASE_VRRP; break; case 'I': debug |= DBG_OPT_DONT_RELEASE_IPVS; break; case 'D': debug |= DBG_OPT_LOG_DETAIL; break; case 'R': debug |= DBG_OPT_DONT_RESPAWN; break; case 'X': debug |= DBG_OPT_RELEASE_VIPS; break; case 'S': log_facility = LOG_FACILITY[atoi(optarg)].facility; break; case 'f': conf_file = optarg; break; case 'P': daemon_mode |= 1; break; case 'C': daemon_mode |= 2; break; case 'p': main_pidfile = optarg; break; case 'c': checkers_pidfile = optarg; break; case 'r': vrrp_pidfile = optarg; break; #ifdef _WITH_SNMP_ case 'x': snmp = 1; break; #endif default: exit(0); break; } } if (optind < argc) { printf("Unexpected argument(s): "); while (optind < argc) printf("%s ", argv[optind++]); printf("\n"); } } /* Entry point */ int main(int argc, char **argv) { /* Init debugging level */ mem_allocated = 0; debug = 0; /* * Parse command line and set debug level. * bits 0..7 reserved by main.c */ parse_cmdline(argc, argv); openlog(PROG, LOG_PID | ((debug & DBG_OPT_LOG_CONSOLE) ? LOG_CONS : 0), log_facility); log_message(LOG_INFO, "Starting " VERSION_STRING); /* Check if keepalived is already running */ if (keepalived_running(daemon_mode)) { log_message(LOG_INFO, "daemon is already running"); goto end; } if (debug & DBG_OPT_LOG_CONSOLE) enable_console_log(); /* daemonize process */ if (!(debug & DBG_OPT_DONT_FORK)) xdaemon(0, 0, 0); /* write the father's pidfile */ if (!pidfile_write(main_pidfile, getpid())) goto end; #ifndef _DEBUG_ /* Signal handling initialization */ signal_init(); #endif /* Create the master thread */ master = thread_make_master(); /* Init daemon */ start_keepalived(); #ifndef _DEBUG_ /* Launch the scheduling I/O multiplexer */ launch_scheduler(); /* Finish daemon process */ stop_keepalived(); #endif /* * Reached when terminate signal catched. * finally return from system */ end: closelog(); exit(0); }