X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FDaemon%2FDaemon.cc;h=1b6e8ae9a62817b28f81fc36a462ebb24c579745;hb=b89e3166f7680755683dccee5e48cb3a820185c0;hp=8cbf98fbbfb6d72fdb0e0b597ae83bcd3ee7adea;hpb=b76d83f9671e935cbd5f2c6873efae1f75d25dac;p=senf.git diff --git a/Utils/Daemon/Daemon.cc b/Utils/Daemon/Daemon.cc index 8cbf98f..1b6e8ae 100644 --- a/Utils/Daemon/Daemon.cc +++ b/Utils/Daemon/Daemon.cc @@ -132,17 +132,19 @@ prefix_ void senf::Daemon::openLog() << " Could not open \"" << stdoutLog_ << "\" for redirecting stdout."; stdout_ = fd; } - if (stderrLog_ == stdoutLog_) { - stderr_ = ::dup(fd); - if (stderr_ < 0) - SENF_THROW_SYSTEM_EXCEPTION("::dup()"); - } - else if (! stderrLog_.empty()) { - fd = ::open(stdoutLog_.c_str(), O_WRONLY | O_APPEND | O_CREAT, 0666); - if (fd < 0) - SENF_THROW_SYSTEM_EXCEPTION("") - << " Could not open \"" << stderrLog_ << "\" for redirecting stderr."; - stderr_ = fd; + if (! stderrLog_.empty()) { + if (stderrLog_ == stdoutLog_) { + stderr_ = ::dup(fd); + if (stderr_ < 0) + SENF_THROW_SYSTEM_EXCEPTION("::dup()"); + } + else { + fd = ::open(stdoutLog_.c_str(), O_WRONLY | O_APPEND | O_CREAT, 0666); + if (fd < 0) + SENF_THROW_SYSTEM_EXCEPTION("") + << " Could not open \"" << stderrLog_ << "\" for redirecting stderr."; + stderr_ = fd; + } } } @@ -369,14 +371,17 @@ prefix_ void senf::Daemon::fork() LIBC_CALL( ::sigaddset, (&cldsig, SIGCHLD) ); LIBC_CALL( ::sigprocmask, (SIG_BLOCK, &cldsig, &oldsig) ); - if (! senf::scheduler::empty() ) + if (! senf::scheduler::empty() ) { std::cerr << "\n" "*** WARNING ***\n" "Scheduler not empty before fork(). THIS MUST NOT HAPPEN.\n" - "The scheduler will be reinitialized by the fork() and lose all registrations.\n" - "*** WARNING ***\n" + "The scheduler will be reinitialized by the fork() and lose all registrations.\n\n"; + senf::scheduler::detail::EventManager::instance().listEvents(std::cerr); + std::cerr << + "\n*** WARNING ***\n" "\n"; + } LIBC_CALL_RV( pid, ::fork, () );