def start_daemon(stdio="/dev/null"): try: ret = os.fork() except OSError, err: lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror)) return 1
def sbserver(): global run_daemon run_daemon = True conf = {} if (not start_config_default(conf)): return 1 if (not start_config_params(conf)): return 1 if (not start_config_get(conf)): return 1 start_log(conf) linfo('starting %s process' % conf['general']['name']) if (not start_config_check(conf)): return 1 signal(SIGHUP, sig_handler) signal(SIGTERM, sig_handler) if (conf['general']['daemon'] == 'yes'): ldebug('%s process starting in daemon mode' % conf['general']['name']) ret = start_daemon() if (ret != 0): lcritic('failed to start %s daemon' % conf['general']['name']) os.exit(ret) ldebug('started %s process with pid: %d' % (conf['general']['name'], os.getpid())) eventhandler = EventHandler() plugins = start_modules(conf) plugins['EventHandler'] = {} plugins['EventHandler']['type'] = (0, ) plugins['EventHandler']['object'] = eventhandler for plugin in plugins: if (0 in plugins[plugin]['type']): ldebug('start system plugin %s' % plugin) plugins[plugin]['object'].config(conf) plugins[plugin]['object'].plugins(plugins) plugins[plugin]['object'].start() elif (1 in plugins[plugin]['type']): ldebug('start listener plugin %s' % plugin) plugins[plugin]['object'].config(conf) plugins[plugin]['object'].plugins(plugins) plugins[plugin]['object'].start() elif (2 in plugins[plugin]['type']): ldebug('start handler plugin %s' % plugin) plugins[plugin]['object'].config(conf) plugins[plugin]['object'].plugins(plugins) plugins[plugin]['object'].start() while (run_daemon): sleep(0.5) for plugin in plugins: if (2 in plugins[plugin]['type']): ldebug('stop handler plugin %s' % plugin) plugins[plugin]['object'].stop() if (1 in plugins[plugin]['type']): ldebug('stop listener plugin %s' % plugin) plugins[plugin]['object'].stop() if (0 in plugins[plugin]['type']): ldebug('stop system plugin %s' % plugin) plugins[plugin]['object'].stop() sleep(1) linfo('exiting %s process' % conf['general']['name']) return 1
ldebug('signal %d ignored' % number) def start_daemon(stdio="/dev/null"): try: ret = os.fork() except OSError, err: lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror)) return 1 if (ret == 0): os.setsid() try: ret = os.fork() except OSError, err: lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror)) return 1 if (ret != 0): os._exit(0) else: os._exit(0) os.open(stdio, os.O_RDWR) os.dup2(0, 1) os.dup2(0, 2) return 0
def start_daemon(stdio = "/dev/null"): try: ret = os.fork() except OSError, err: lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror)) return 1
def sbserver(): global run_daemon run_daemon = True conf = {} if (not start_config_default(conf)): return 1 if (not start_config_params(conf)): return 1 if (not start_config_get(conf)): return 1 start_log(conf) linfo('starting %s process' % conf['general']['name']) if (not start_config_check(conf)): return 1 signal(SIGHUP, sig_handler) signal(SIGTERM, sig_handler) if (conf['general']['daemon'] == 'yes'): ldebug('%s process starting in daemon mode' % conf['general']['name']) ret = start_daemon() if (ret != 0): lcritic('failed to start %s daemon' % conf['general']['name']) os.exit(ret) ldebug('started %s process with pid: %d' % (conf['general']['name'], os.getpid())) eventhandler = EventHandler() plugins = start_modules(conf) plugins['EventHandler'] = {} plugins['EventHandler']['type'] = (0,) plugins['EventHandler']['object'] = eventhandler for plugin in plugins: if (0 in plugins[plugin]['type']): ldebug('start system plugin %s' % plugin) plugins[plugin]['object'].config(conf) plugins[plugin]['object'].plugins(plugins) plugins[plugin]['object'].start() elif (1 in plugins[plugin]['type']): ldebug('start listener plugin %s' % plugin) plugins[plugin]['object'].config(conf) plugins[plugin]['object'].plugins(plugins) plugins[plugin]['object'].start() elif (2 in plugins[plugin]['type']): ldebug('start handler plugin %s' % plugin) plugins[plugin]['object'].config(conf) plugins[plugin]['object'].plugins(plugins) plugins[plugin]['object'].start() while (run_daemon): sleep(0.5) for plugin in plugins: if (2 in plugins[plugin]['type']): ldebug('stop handler plugin %s' % plugin) plugins[plugin]['object'].stop() if (1 in plugins[plugin]['type']): ldebug('stop listener plugin %s' % plugin) plugins[plugin]['object'].stop() if (0 in plugins[plugin]['type']): ldebug('stop system plugin %s' % plugin) plugins[plugin]['object'].stop() sleep(1) linfo('exiting %s process' % conf['general']['name']) return 1
else: ldebug('signal %d ignored' % number) def start_daemon(stdio = "/dev/null"): try: ret = os.fork() except OSError, err: lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror)) return 1 if (ret == 0): os.setsid() try: ret = os.fork() except OSError, err: lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror)) return 1 if (ret != 0): os._exit(0) else: os._exit(0) os.open(stdio, os.O_RDWR) os.dup2(0, 1) os.dup2(0, 2) return 0