From 1ce90b7d17f30e74280244cbaab0dea80ff7aeb2 Mon Sep 17 00:00:00 2001 From: Cloud Wu Date: Fri, 23 May 2014 10:54:54 +0800 Subject: [PATCH] daemon mode --- HISTORY.md | 3 ++- examples/config | 1 + skynet-src/skynet_imp.h | 1 + skynet-src/skynet_main.c | 10 ++-------- skynet-src/skynet_start.c | 6 ++++++ 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index aa8ebfa0..27927ea5 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,7 +1,8 @@ Dev version ----------- * Bugfix: update lua-bson (signed 32bit int bug) -* cluster support +* Add cluster support +* Add daemon mode v0.2.1 (2014-5-19) ----------- diff --git a/examples/config b/examples/config index f89af28b..f759d57f 100644 --- a/examples/config +++ b/examples/config @@ -12,3 +12,4 @@ lualoader = "lualib/loader.lua" -- preload = "./examples/preload.lua" -- run preload.lua before every lua service run snax = root.."examples/?.lua;"..root.."test/?.lua" cpath = root.."cservice/?.so" +daemon = false diff --git a/skynet-src/skynet_imp.h b/skynet-src/skynet_imp.h index 81fad4c8..afad0305 100644 --- a/skynet-src/skynet_imp.h +++ b/skynet-src/skynet_imp.h @@ -4,6 +4,7 @@ struct skynet_config { int thread; int harbor; + int daemon; const char * module_path; const char * bootstrap; }; diff --git a/skynet-src/skynet_main.c b/skynet-src/skynet_main.c index 3b8cf1b2..49f5ed3c 100644 --- a/skynet-src/skynet_main.c +++ b/skynet-src/skynet_main.c @@ -24,7 +24,6 @@ optint(const char *key, int opt) { return strtol(str, NULL, 10); } -/* static int optboolean(const char *key, int opt) { const char * str = skynet_getenv(key); @@ -34,7 +33,7 @@ optboolean(const char *key, int opt) { } return strcmp(str,"true")==0; } -*/ + static const char * optstring(const char *key,const char * opt) { const char * str = skynet_getenv(key); @@ -109,21 +108,16 @@ main(int argc, char *argv[]) { } _init_env(L); -#ifdef LUA_CACHELIB - printf("Skynet lua code cache enable\n"); -#endif - config.thread = optint("thread",8); config.module_path = optstring("cpath","./cservice/?.so"); config.harbor = optint("harbor", 1); config.bootstrap = optstring("bootstrap","snlua bootstrap"); + config.daemon = optboolean("daemon", 0); lua_close(L); skynet_start(&config); skynet_globalexit(); - printf("skynet exit\n"); - return 0; } diff --git a/skynet-src/skynet_start.c b/skynet-src/skynet_start.c index d1f80e10..91b4f224 100644 --- a/skynet-src/skynet_start.c +++ b/skynet-src/skynet_start.c @@ -195,6 +195,12 @@ bootstrap(const char * cmdline) { void skynet_start(struct skynet_config * config) { + if (config->daemon) { + if (daemon(1,0)) { + fprintf(stderr, "daemon error"); + exit(1); + } + } skynet_harbor_init(config->harbor); skynet_handle_init(config->harbor); skynet_mq_init();