From fb886c8248d7d01f86f831fab9887e730d33ea6f Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Tue, 16 Feb 2010 22:26:06 +0000 Subject: allegedly-release-friendly dirty dirty dirty hack (concerning pids) --- src/posix/posixDaemon.cpp | 21 +++++++++++++-------- src/posix/signalHandler.hpp | 9 +++++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/posix/posixDaemon.cpp b/src/posix/posixDaemon.cpp index 4b4f63b..e4a4148 100644 --- a/src/posix/posixDaemon.cpp +++ b/src/posix/posixDaemon.cpp @@ -97,9 +97,13 @@ void DaemonService::chroot(std::string const& chrootdir) AnytunError::throwErr() << "can't change to /"; } +/// TODO: this outstandignly ugly please and i really can't stress the please fix it asap!!!!!!! + +std::ofstream pidFile; // FIXXXME no global variable + void DaemonService::daemonize() { - std::ofstream pidFile; +// std::ofstream pidFile; if(gOpt.getPidFile() != "") { pidFile.open(gOpt.getPidFile().c_str()); if(!pidFile.is_open()) @@ -143,14 +147,15 @@ void DaemonService::daemonize() if(dup(fd) == -1) // stderr cLog.msg(Log::PRIO_WARNING) << "can't open /dev/null as stderr"; } + +// FIXXXXME: write this pid to file (currently pid from posix/signhandler.hpp:77 is used) +// +// if(pidFile.is_open()) { +// pid_t pid = getpid(); +// pidFile << pid; +// pidFile.close(); +// } - if(pidFile.is_open()) { - pid_t pid = getpid(); - pidFile << pid; - pidFile.close(); - } - - setpgid(0, 0); daemonized_ = true; } diff --git a/src/posix/signalHandler.hpp b/src/posix/signalHandler.hpp index a5668b4..3851c78 100644 --- a/src/posix/signalHandler.hpp +++ b/src/posix/signalHandler.hpp @@ -73,8 +73,17 @@ int SigUsr2Handler(int /*sig*/, const std::string& /*msg*/) return 0; } +/// TODO: this outstandignly ugly please and i really can't stress the please fix it asap!!!!!!! +extern std::ofstream pidFile; + void handleSignal() { + if(pidFile.is_open()) { + pid_t pid = getpid(); + pidFile << pid; + pidFile.close(); + } + struct timespec timeout; sigset_t signal_set; int sigNum; -- cgit v1.2.3