aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-09-20 10:56:25 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2014-09-20 11:03:59 +0200
commitd6712db35419e36b2c89191eb730a86d95abf4b0 (patch)
tree2f251c16c9b9689aaef24f0012378d410c005591
parent25308337d659108e3320257fb6c1c16d5fe24aa9 (diff)
downloadbitcoin-d6712db35419e36b2c89191eb730a86d95abf4b0.tar.xz
Also create pid file in non-daemon mode
Always make a pid file, not only when `-daemon` specified. This is useful for troubleshooting, for attaching debuggers and loggers and such. - Write the pid file only after the datadir lock was acquired - Don't create or remove a pid file on WIN32, and also don't show the option
-rw-r--r--src/bitcoind.cpp1
-rw-r--r--src/init.cpp8
-rw-r--r--src/util.cpp2
-rw-r--r--src/util.h2
4 files changed, 9 insertions, 4 deletions
diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp
index 5be8708979..0737b5a83d 100644
--- a/src/bitcoind.cpp
+++ b/src/bitcoind.cpp
@@ -129,7 +129,6 @@ bool AppInit(int argc, char* argv[])
}
if (pid > 0) // Parent process, pid is child process id
{
- CreatePidFile(GetPidFile(), pid);
return true;
}
// Child process falls through to rest of initialization
diff --git a/src/init.cpp b/src/init.cpp
index 67f53e044c..7299bd0f4a 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -160,7 +160,9 @@ void Shutdown()
if (pwalletMain)
bitdb.Flush(true);
#endif
+#ifndef WIN32
boost::filesystem::remove(GetPidFile());
+#endif
UnregisterAllWallets();
#ifdef ENABLE_WALLET
if (pwalletMain)
@@ -228,7 +230,9 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += " -maxorphanblocks=<n> " + strprintf(_("Keep at most <n> unconnectable blocks in memory (default: %u)"), DEFAULT_MAX_ORPHAN_BLOCKS) + "\n";
strUsage += " -maxorphantx=<n> " + strprintf(_("Keep at most <n> unconnectable transactions in memory (default: %u)"), DEFAULT_MAX_ORPHAN_TRANSACTIONS) + "\n";
strUsage += " -par=<n> " + strprintf(_("Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d)"), -(int)boost::thread::hardware_concurrency(), MAX_SCRIPTCHECK_THREADS, DEFAULT_SCRIPTCHECK_THREADS) + "\n";
+#ifndef WIN32
strUsage += " -pid=<file> " + _("Specify pid file (default: bitcoind.pid)") + "\n";
+#endif
strUsage += " -reindex " + _("Rebuild block chain index from current blk000??.dat files") + " " + _("on startup") + "\n";
#if !defined(WIN32)
strUsage += " -sysperms " + _("Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality)") + "\n";
@@ -714,7 +718,9 @@ bool AppInit2(boost::thread_group& threadGroup)
static boost::interprocess::file_lock lock(pathLockFile.string().c_str());
if (!lock.try_lock())
return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running."), strDataDir));
-
+#ifndef WIN32
+ CreatePidFile(GetPidFile(), getpid());
+#endif
if (GetBoolArg("-shrinkdebugfile", !fDebug))
ShrinkDebugFile();
LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
diff --git a/src/util.cpp b/src/util.cpp
index 0ac0f70a79..f387fce8c7 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -472,6 +472,7 @@ void ReadConfigFile(map<string, string>& mapSettingsRet,
ClearDatadirCache();
}
+#ifndef WIN32
boost::filesystem::path GetPidFile()
{
boost::filesystem::path pathPidFile(GetArg("-pid", "bitcoind.pid"));
@@ -479,7 +480,6 @@ boost::filesystem::path GetPidFile()
return pathPidFile;
}
-#ifndef WIN32
void CreatePidFile(const boost::filesystem::path &path, pid_t pid)
{
FILE* file = fopen(path.string().c_str(), "w");
diff --git a/src/util.h b/src/util.h
index e72c99adc7..4b2415278b 100644
--- a/src/util.h
+++ b/src/util.h
@@ -93,8 +93,8 @@ bool TryCreateDirectory(const boost::filesystem::path& p);
boost::filesystem::path GetDefaultDataDir();
const boost::filesystem::path &GetDataDir(bool fNetSpecific = true);
boost::filesystem::path GetConfigFile();
-boost::filesystem::path GetPidFile();
#ifndef WIN32
+boost::filesystem::path GetPidFile();
void CreatePidFile(const boost::filesystem::path &path, pid_t pid);
#endif
void ReadConfigFile(std::map<std::string, std::string>& mapSettingsRet, std::map<std::string, std::vector<std::string> >& mapMultiSettingsRet);