incrond
usa o subsistema inotify
do nível de kernel, incorporando a interface inotify
C em um contêiner C ++. Dando uma olhada nos arquivos incrond source , parece que o erro que você está enfrentando está relacionado a uma pesquisa com falha no descritor de arquivo que foi desativado na classe incrond
C ++:
int res = poll(ed.GetPollData(), ed.GetSize(), -1);
if (res > 0) {
ed.ProcessEvents();
}
else if (res < 0) {
switch (errno) {
case EINTR: // syscall interrupted - continue polling
break;
case EAGAIN: // not enough resources - wait a moment and try again
syslog(LOG_WARNING, "polling failed due to resource shortage, retrying later...");
sleep(POLL_EAGAIN_WAIT);
break;
default:
throw InotifyException("polling failed", errno, NULL);
}
}
É difícil identificar a causa exata da pesquisa com falha. As causas mais comuns podem ser:
- um sistema sobrecarregado
- um crash / segfault de algumas
incrond
functions
De qualquer forma, quantos arquivos existem sob seus diretórios monitorados?