From 5b8345539edb8b5b0e09005f253412263a37dd9c Mon Sep 17 00:00:00 2001 From: wyy Date: Sat, 30 Nov 2013 07:18:15 -0800 Subject: [PATCH] update scripts/cjserver --- conf/server.conf | 6 ++++++ scripts/cjserver | 3 ++- src/server.cpp | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/conf/server.conf b/conf/server.conf index 46a73c0..068c48a 100644 --- a/conf/server.conf +++ b/conf/server.conf @@ -6,8 +6,14 @@ port=11200 #number of thread thread_num=4 +#deamonize +daemonize=true + #dict path dict_path=/usr/share/CppJieba/dicts/jieba.dict.utf8 #model path model_path=/usr/share/CppJieba/dicts/hmm_model.utf8 + +#pid file +pid_file=/var/run/CppJieba/cjserver.pid diff --git a/scripts/cjserver b/scripts/cjserver index 6e96116..11cf5f2 100755 --- a/scripts/cjserver +++ b/scripts/cjserver @@ -8,6 +8,7 @@ DESC=cjserver RUNDIR=/var/run/CppJieba PIDFILE=$RUNDIR/cjserver.pid +LOGFILE=/dev/null test -x $DAEMON || exit 0 @@ -19,7 +20,7 @@ case "$1" in mkdir -p $RUNDIR touch $PIDFILE chmod 755 $RUNDIR - if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + if start-stop-daemon --start --quiet --umask 007 --pidfile $PIDFILE --exec /bin/bash -- -c "$DAEMON $DAEMON_ARGS >> $LOGFILE 2>&1" then echo "$NAME." else diff --git a/src/server.cpp b/src/server.cpp index d9b0b25..318d66c 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -76,6 +76,23 @@ bool run(int argc, char** argv) LogFatal("conf get model_path failed."); return false; } + if(conf.get("daemonize", val) && "true" == val) + { + if(fork() > 0) + exit(0); + setsid(); + if(!conf.get("pid_file", val)) + { + LogFatal("conf get pid_file failed."); + return false; + } + + int pid = getpid(); + string pidStr = to_string(pid); + loadStr2File(val.c_str(), ios::out, pidStr); + LogInfo("write pid[%s] into file[%s]", pidStr.c_str(), val.c_str()); + + } ReqHandler reqHandler(dictPath, modelPath); ServerFrame sf(port, threadNum, &reqHandler);