diff options
Diffstat (limited to 'init.cpp')
| -rw-r--r-- | init.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
@@ -78,7 +78,9 @@ int main(int argc, char* argv[]) fRet = AppInit(argc, argv); if (fRet && fDaemon) - pthread_exit((void*)0); + return 0; + + return 1; } #endif @@ -120,6 +122,8 @@ bool AppInit2(int argc, char* argv[]) sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGTERM, &sa, NULL); + sigaction(SIGINT, &sa, NULL); + sigaction(SIGHUP, &sa, NULL); #endif // @@ -158,6 +162,8 @@ bool AppInit2(int argc, char* argv[]) " -paytxfee=<amt> \t " + _("Fee per KB to add to transactions you send\n") + #ifdef GUI " -server \t\t " + _("Accept command line and JSON-RPC commands\n") + +#endif +#ifndef __WXMSW__ " -daemon \t\t " + _("Run in the background as a daemon and accept commands\n") + #endif " -testnet \t\t " + _("Use the test network\n") + @@ -194,17 +200,20 @@ bool AppInit2(int argc, char* argv[]) fDebug = GetBoolArg("-debug"); +#ifndef __WXMSW__ fDaemon = GetBoolArg("-daemon"); +#else + fDaemon = false; +#endif if (fDaemon) fServer = true; else fServer = GetBoolArg("-server"); - /* force fServer and fDaemon when running without GUI */ + /* force fServer when running without GUI */ #ifndef GUI fServer = true; - fDaemon = true; #endif fPrintToConsole = GetBoolArg("-printtoconsole"); @@ -224,7 +233,7 @@ bool AppInit2(int argc, char* argv[]) exit(ret); } -#ifndef GUI +#ifndef __WXMSW__ if (fDaemon) { // Daemonize @@ -236,6 +245,10 @@ bool AppInit2(int argc, char* argv[]) } if (pid > 0) return true; + + pid_t sid = setsid(); + if (sid < 0) + fprintf(stderr, "Error: setsid() returned %d errno %d\n", sid, errno); } #endif @@ -467,5 +480,10 @@ bool AppInit2(int argc, char* argv[]) SetStartOnSystemStartup(true); #endif +#ifndef GUI + while (1) + Sleep(5000); +#endif + return true; } |