pidfile support for daemon
This commit is contained in:
parent
485dda9774
commit
66fb32d267
5
init.cpp
5
init.cpp
@ -41,6 +41,7 @@ void Shutdown(void* parg)
|
|||||||
DBFlush(false);
|
DBFlush(false);
|
||||||
StopNode();
|
StopNode();
|
||||||
DBFlush(true);
|
DBFlush(true);
|
||||||
|
boost::filesystem::remove(GetPidFile());
|
||||||
CreateThread(ExitTimeout, NULL);
|
CreateThread(ExitTimeout, NULL);
|
||||||
Sleep(50);
|
Sleep(50);
|
||||||
printf("Bitcoin exiting\n\n");
|
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") +
|
" bitcoin [options] help <command> \t\t " + _("Get help for a command\n") +
|
||||||
_("Options:\n") +
|
_("Options:\n") +
|
||||||
" -conf=<file> \t\t " + _("Specify configuration file (default: bitcoin.conf)\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 \t\t " + _("Generate coins\n") +
|
||||||
" -gen=0 \t\t " + _("Don't generate coins\n") +
|
" -gen=0 \t\t " + _("Don't generate coins\n") +
|
||||||
" -min \t\t " + _("Start minimized\n") +
|
" -min \t\t " + _("Start minimized\n") +
|
||||||
@ -251,7 +253,10 @@ bool AppInit2(int argc, char* argv[])
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (pid > 0)
|
if (pid > 0)
|
||||||
|
{
|
||||||
|
CreatePidFile(GetPidFile(), pid);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
pid_t sid = setsid();
|
pid_t sid = setsid();
|
||||||
if (sid < 0)
|
if (sid < 0)
|
||||||
|
19
util.cpp
19
util.cpp
@ -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 GetFilesize(FILE* file)
|
||||||
{
|
{
|
||||||
int nSavePos = ftell(file);
|
int nSavePos = ftell(file);
|
||||||
|
2
util.h
2
util.h
@ -172,6 +172,8 @@ bool WildcardMatch(const string& str, const string& mask);
|
|||||||
int GetFilesize(FILE* file);
|
int GetFilesize(FILE* file);
|
||||||
void GetDataDir(char* pszDirRet);
|
void GetDataDir(char* pszDirRet);
|
||||||
string GetConfigFile();
|
string GetConfigFile();
|
||||||
|
string GetPidFile();
|
||||||
|
void CreatePidFile(string pidFile, pid_t pid);
|
||||||
void ReadConfigFile(map<string, string>& mapSettingsRet, map<string, vector<string> >& mapMultiSettingsRet);
|
void ReadConfigFile(map<string, string>& mapSettingsRet, map<string, vector<string> >& mapMultiSettingsRet);
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
string MyGetSpecialFolderPath(int nFolder, bool fCreate);
|
string MyGetSpecialFolderPath(int nFolder, bool fCreate);
|
||||||
|
Loading…
Reference in New Issue
Block a user