diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/init.cpp | 21 | ||||
-rw-r--r-- | src/util/system.cpp | 10 | ||||
-rw-r--r-- | src/util/system.h | 1 |
3 files changed, 20 insertions, 12 deletions
diff --git a/src/init.cpp b/src/init.cpp index a5cd4d3cd1..f8be487cb7 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -53,6 +53,8 @@ #include <stdio.h> #ifndef WIN32 +#include <attributes.h> +#include <cerrno> #include <signal.h> #include <sys/stat.h> #endif @@ -1192,12 +1194,29 @@ bool AppInitLockDataDirectory() return true; } +#ifndef WIN32 +NODISCARD static bool CreatePidFile() +{ + FILE* file = fsbridge::fopen(GetPidFile(), "w"); + if (file) { + fprintf(file, "%d\n", getpid()); + fclose(file); + return true; + } else { + return InitError(strprintf(_("Unable to create the PID file '%s': %s"), GetPidFile().string(), std::strerror(errno))); + } +} +#endif + bool AppInitMain(InitInterfaces& interfaces) { const CChainParams& chainparams = Params(); // ********************************************************* Step 4a: application initialization #ifndef WIN32 - CreatePidFile(GetPidFile(), getpid()); + if (!CreatePidFile()) { + // Detailed error printed inside CreatePidFile(). + return false; + } #endif if (g_logger->m_print_to_file) { if (gArgs.GetBoolArg("-shrinkdebugfile", g_logger->DefaultShrinkDebugFile())) { diff --git a/src/util/system.cpp b/src/util/system.cpp index 06317a3a90..8268456919 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -963,16 +963,6 @@ fs::path GetPidFile() { return AbsPathForConfigVal(fs::path(gArgs.GetArg("-pid", BITCOIN_PID_FILENAME))); } - -void CreatePidFile(const fs::path &path, pid_t pid) -{ - FILE* file = fsbridge::fopen(path, "w"); - if (file) - { - fprintf(file, "%d\n", pid); - fclose(file); - } -} #endif bool RenameOver(fs::path src, fs::path dest) diff --git a/src/util/system.h b/src/util/system.h index 5932e55793..44ba740e4e 100644 --- a/src/util/system.h +++ b/src/util/system.h @@ -86,7 +86,6 @@ void ClearDatadirCache(); fs::path GetConfigFile(const std::string& confPath); #ifndef WIN32 fs::path GetPidFile(); -void CreatePidFile(const fs::path &path, pid_t pid); #endif #ifdef WIN32 fs::path GetSpecialFolderPath(int nFolder, bool fCreate = true); |