6 #if defined(HAVE_CONFIG_H) 51 int fork_daemon(
bool nochdir,
bool noclose,
TokenPipeEnd& endpoint)
65 endpoint = umbilical->TakeReadEnd();
66 umbilical->TakeWriteEnd().
Close();
77 endpoint = umbilical->TakeWriteEnd();
78 umbilical->TakeReadEnd().
Close();
87 if (chdir(
"/") != 0) {
94 int fd = open(
"/dev/null", O_RDWR);
96 bool err = dup2(fd, STDIN_FILENO) < 0 || dup2(fd, STDOUT_FILENO) < 0 || dup2(fd, STDERR_FILENO) < 0;
98 if (fd > 2) close(fd);
133 strUsage +=
"\nUsage: bitcoind [options] Start " PACKAGE_NAME "\n" 162 }
catch (
const std::exception& e) {
167 for (
int i = 1; i < argc; i++) {
192 node.kernel = std::make_unique<kernel::Context>();
204 switch (fork_daemon(1, 0, daemon_ep)) {
219 tfm::format(std::cerr,
"Error during initializaton - check debug.log for details\n");
226 #endif // HAVE_DECL_FORK 236 catch (
const std::exception& e) {
262 util::WinCmdLineArgs winArgs;
263 std::tie(argc, argv) = winArgs.get();
bool ReadConfigFiles(std::string &error, bool ignore_invalid_keys=false)
bool IsArgSet(const std::string &strArg) const
Return true if the given argument has been manually set.
void InitLogging(const ArgsManager &args)
Initialize global loggers.
void SetupServerArgs(ArgsManager &argsman)
Register all arguments with the ArgsManager.
bool SoftSetBoolArg(const std::string &strArg, bool fValue)
Set a boolean argument if it doesn't already have a value.
void Shutdown(NodeContext &node)
bool HelpRequested(const ArgsManager &args)
bilingual_str Untranslated(std::string original)
Mark a bilingual_str as untranslated.
void Close()
Explicit close function.
bool ParseParameters(int argc, const char *const argv[], std::string &error)
bool GetBoolArg(const std::string &strArg, bool fDefault) const
Return boolean argument or default value.
std::string LicenseInfo()
Returns licensing information (for -version)
const std::function< std::string(const char *)> G_TRANSLATION_FUN
Translate string to current locale using Qt.
int TokenWrite(uint8_t token)
Write token to endpoint.
static constexpr bool DEFAULT_DAEMON
Default value for -daemon option.
bool AppInitBasicSetup(const ArgsManager &args)
Initialize bitcoin core: Basic context setup.
std::string GetHelpMessage() const
Get the help string.
std::string SysErrorString(int err)
Return system error string from errno value.
NodeContext struct containing references to chain state and connection state.
static bool AppInit(NodeContext &node, int argc, char *argv[])
void Interrupt(NodeContext &node)
Interrupt threads.
bool InitError(const bilingual_str &str)
Show error message.
void SelectParams(const std::string &network)
Sets the params returned by Params() to those for the given chain name.
bool CheckDataDirOption()
int TokenRead()
Read token from endpoint.
bool AppInitMain(NodeContext &node, interfaces::BlockAndHeaderTipInfo *tip_info)
Bitcoin core main initialization.
void PrintExceptionContinue(const std::exception *pex, std::string_view thread_name)
void SetSyscallSandboxPolicy(SyscallSandboxPolicy syscall_policy)
Force the current thread (and threads created from the current thread) into a restricted-service oper...
std::string FormatParagraph(std::string_view in, size_t width, size_t indent)
Format a paragraph of text to a fixed width, adding spaces for indentation to any added line...
std::string FormatFullVersion()
void ThreadSetInternalName(std::string &&)
Set the internal (in-memory) name of the current thread only.
std::unique_ptr< Init > MakeNodeInit(node::NodeContext &node, int argc, char *argv[], int &exit_status)
Return implementation of Init interface for the node process.
bool InitSettings(std::string &error)
Read and update settings file with saved settings.
void WaitForShutdown()
Wait for StartShutdown to be called in any thread.
std::string GetArg(const std::string &strArg, const std::string &strDefault) const
Return string argument or default value.
bool AppInitParameterInteraction(const ArgsManager &args, bool use_syscall_sandbox)
Initialization: parameter interaction.
bool AppInitSanityChecks(const kernel::Context &kernel)
Initialization sanity checks.
static constexpr bool DEFAULT_DAEMONWAIT
Default value for -daemonwait option.
static std::optional< TokenPipe > Make()
Create a new pipe.
std::string GetChainName() const
Returns the appropriate chain name from the program arguments.
bool IsSwitchChar(char c)
bool AppInitInterfaces(NodeContext &node)
Initialize node and wallet interface pointers.
bool AppInitLockDataDirectory()
Lock bitcoin core data directory.
bool IsOpen()
Return whether endpoint is open.
UrlDecodeFn *const URL_DECODE
bool error(const char *fmt, const Args &... args)
void InitParameterInteraction(ArgsManager &args)
Parameter interaction: change current parameters depending on various rules.
#define Assert(val)
Identity function.
std::string(const std::string &url_encoded) UrlDecodeFn