У меня есть приложение, которое использует pqxx и libpq для подключения к postgresql, все отлично работает в режиме, не являющемся демоном, но однажды демонизировав приложение, после выполнения некоторых запросов функция опроса заблокирована в libpq, как это можно сделать Я решил эту проблему?
Ниже код используется для daemonize:
void daemonize()
{
pid_t pid;
if ((pid = fork()) < 0)
{
// fork() failed
ErrLog(<<"fork() failed: "<<strerror(errno));
throw std::runtime_error(strerror(errno));
}
else if (pid != 0)
{
// parent process done
exit(0);
}
if(chdir("/") < 0)
{
ErrLog(<<"chdir() failed: "<<strerror(errno));
throw std::runtime_error(strerror(errno));
}
// Nothing should be writing to stdout/stderr after this
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
if(mPidFile.size() > 0)
{
std::ofstream _pid(mPidFile.c_str(), std::ios_base::out | std::ios_base::trunc);
_pid << getpid();
_pid.close();
}
}