Browse Source

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
metaverse
Wladimir J. van der Laan 10 years ago
parent
commit
d6712db354
No known key found for this signature in database GPG Key ID: 74810B012346C9A6
  1. 1
      src/bitcoind.cpp
  2. 8
      src/init.cpp
  3. 2
      src/util.cpp
  4. 2
      src/util.h

1
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

8
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");

2
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");

2
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);

Loading…
Cancel
Save