blkmond тоже пофигу, вылетел он скорее всего из-за того что превышен лимит коннектов к bitcoind. А вообще, blkmond не нужен.
Добавляешь вот это
if (!fInitialDownload)
{
// Support block notification
std::string strCmd = GetArg("-blocknotify", "");
if (!strCmd.empty())
{
#ifndef WIN32
fflush(stdout);
pid_t nPid = fork();
if (!nPid)
{
if ((nPid = fork()) != 0)
// middle
_Exit(nPid < 0);
// child
#endif
try
{
std::string::size_type nPos;
while ((nPos = strCmd.find("%s")) != std::string::npos)
strCmd.replace(nPos, 2, hash.GetHex());
#ifndef WIN32
}
catch (...)
{
printf("BlockNotify: Exception preparing command\n");
fflush(stdout);
_exit(1);
}
execl("/bin/sh", "/bin/sh", "-c", strCmd.c_str(), NULL);
printf("BlockNotify: Failed to exec: %s\n", strerror(errno));
fflush(stdout);
_exit(2);
}
else
if (nPid == -1)
printf("BlockNotify: Failed to fork: %s\n", strerror(errno));
else
waitpid(nPid, NULL, 0);
#else
// inside the 'try' block...
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
memset(&pi, 0, sizeof(pi));
if (!CreateProcess(NULL, strCmd.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
printf("BlockNotify: CreateProcess failed (%d)\n", GetLastError());
}
catch (...)
{
printf("BlockNotify: Error occurred\n");
}
#endif
}
}
В конец функции CBlock::SetBestChain перед return и сможешь с помощью параметра -blocknotify задать демону команду уведомления о блоках (killall -s SIGUSR1 pushpoold) и он будет сам сообщать pushpoold о новых блоках. Ну и там еще пара extern'ов нужна.
Хотя, pushpoold тоже не нужен.