diff options
-rw-r--r-- | init.cpp | 5 | ||||
-rw-r--r-- | util.cpp | 19 | ||||
-rw-r--r-- | util.h | 2 |
3 files changed, 26 insertions, 0 deletions
@@ -41,6 +41,7 @@ void Shutdown(void* parg) DBFlush(false); StopNode(); DBFlush(true); + boost::filesystem::remove(GetPidFile()); CreateThread(ExitTimeout, NULL); Sleep(50); printf("Bitcoin exiting\n\n"); @@ -151,6 +152,7 @@ bool AppInit2(int argc, char* argv[]) " bitcoin [options] help <command> \t\t " + _("Get help for a command\n") + _("Options:\n") + " -conf=<file> \t\t " + _("Specify configuration file (default: bitcoin.conf)\n") + + " -pid=<file> \t\t " + _("Specify pid file (default: bitcoind.pid)\n") + " -gen \t\t " + _("Generate coins\n") + " -gen=0 \t\t " + _("Don't generate coins\n") + " -min \t\t " + _("Start minimized\n") + @@ -251,7 +253,10 @@ bool AppInit2(int argc, char* argv[]) return false; } if (pid > 0) + { + CreatePidFile(GetPidFile(), pid); return true; + } pid_t sid = setsid(); if (sid < 0) @@ -747,6 +747,25 @@ void ReadConfigFile(map<string, string>& mapSettingsRet, } } +string GetPidFile() +{ + namespace fs = boost::filesystem; + fs::path pathConfig(GetArg("-pid", "bitcoind.pid")); + if (!pathConfig.is_complete()) + pathConfig = fs::path(GetDataDir()) / pathConfig; + return pathConfig.string(); +} + +void CreatePidFile(string pidFile, pid_t pid) +{ + FILE* file; + if (file = fopen(pidFile.c_str(), "w")) + { + fprintf(file, "%d\n", pid); + fclose(file); + } +} + int GetFilesize(FILE* file) { int nSavePos = ftell(file); @@ -172,6 +172,8 @@ bool WildcardMatch(const string& str, const string& mask); int GetFilesize(FILE* file); void GetDataDir(char* pszDirRet); string GetConfigFile(); +string GetPidFile(); +void CreatePidFile(string pidFile, pid_t pid); void ReadConfigFile(map<string, string>& mapSettingsRet, map<string, vector<string> >& mapMultiSettingsRet); #ifdef __WXMSW__ string MyGetSpecialFolderPath(int nFolder, bool fCreate); |