#include "launchpad-process-pool/signal_manager.hh"
+#include <pthread.h>
#include <sys/signalfd.h>
#include <filesystem>
}
}
+ void DoAtFork() {
+ _W("pid: %d", pid_);
+ try {
+ std::string path = "/run/aul/apps/" + std::to_string(getuid()) + "/" +
+ std::to_string(pid_);
+ DeleteSocketPath(fs::path(path));
+ DeleteUnusedFiles();
+ } catch (const std::filesystem::filesystem_error& e) {
+ _E("Exception occurs. error(%s:%d)", e.what(), e.code().value());
+ }
+ }
+
private:
void DeleteSocketPath(const fs::path& path) {
try {
recycle_bin_.reset();
hydra_sigchld_event_.reset();
sigchld_event_.reset();
+ pthread_atfork(nullptr, nullptr, nullptr);
disposed_ = true;
_W("END");
}
signal(signo, SIG_DFL);
}
+ pthread_atfork(nullptr, nullptr,
+ []() {
+ GarbageCollector gc(getpid());
+ gc.DoAtFork();
+ });
+
disposed_ = false;
_W("END");
}