From 06b504f2911f56e6323489453fd95ba219c7dcb2 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Mon, 15 Jul 2019 16:08:08 +0200 Subject: [PATCH] Adjust PID file management refs #5230 --- lib/base/application.cpp | 4 ++++ lib/base/application.hpp | 2 +- lib/cli/daemoncommand.cpp | 26 ++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/base/application.cpp b/lib/base/application.cpp index 4d10ad027..9aea52c7b 100644 --- a/lib/base/application.cpp +++ b/lib/base/application.cpp @@ -80,7 +80,9 @@ void Application::Stop(bool runtimeRemoved) WSACleanup(); #endif /* _WIN32 */ +#ifdef _WIN32 ClosePidFile(true); +#endif /* _WIN32 */ ObjectImpl::Stop(runtimeRemoved); } @@ -964,6 +966,7 @@ int Application::Run() SetConsoleCtrlHandler(&Application::CtrlHandler, TRUE); #endif /* _WIN32 */ +#ifdef _WIN32 try { UpdatePidFile(Configuration::PidPath); } catch (const std::exception&) { @@ -971,6 +974,7 @@ int Application::Run() << "Cannot update PID file '" << Configuration::PidPath << "'. Aborting."; return EXIT_FAILURE; } +#endif /* _WIN32 */ SetMainTime(Utility::GetTime()); diff --git a/lib/base/application.hpp b/lib/base/application.hpp index de046daed..906f17f9a 100644 --- a/lib/base/application.hpp +++ b/lib/base/application.hpp @@ -132,7 +132,7 @@ private: static int m_ArgC; /**< The number of command-line arguments. */ static char **m_ArgV; /**< Command-line arguments. */ - FILE *m_PidFile; /**< The PID file */ + FILE *m_PidFile = nullptr; /**< The PID file */ static bool m_Debugging; /**< Whether debugging is enabled. */ static LogSeverity m_DebuggingSeverity; /**< Whether debugging severity is set. */ static double m_StartTime; diff --git a/lib/cli/daemoncommand.cpp b/lib/cli/daemoncommand.cpp index c2e55975b..0f5ad15eb 100644 --- a/lib/cli/daemoncommand.cpp +++ b/lib/cli/daemoncommand.cpp @@ -7,6 +7,7 @@ #include "config/configcompiler.hpp" #include "config/configcompilercontext.hpp" #include "config/configitembuilder.hpp" +#include "base/defer.hpp" #include "base/logger.hpp" #include "base/application.hpp" #include "base/timer.hpp" @@ -412,6 +413,15 @@ static pid_t StartUnixWorker(const std::vector& configs) return pid; } + +class PidFileManagementApp : public Application +{ +public: + inline int Main() override + { + return EXIT_FAILURE; + } +}; #endif /* _WIN32 */ /** @@ -466,6 +476,22 @@ int DaemonCommand::Run(const po::variables_map& vm, const std::vector