Muitos arquivos abertos?
Seu programa está abrindo lotes de arquivos? Talvez você esteja ficando sem descritores de arquivos? Aqui está um link sobre como alterar seu programa, o shell e o sistema operacional se é o caso. Para ver muitos dos que você está usando com o seu programa:
sudo lsof | grep <PID> | wc -l
No meu sistema Ubuntu, o limite do shell é 1024, incluindo stdout, stderr e stdin. Isso está definido em /etc/security/limits.conf. O pequeno programa a seguir mostra isso:
#include <stdio.h>
int count=0;
int main( void ) {
while(1) {
FILE *fd = fopen("foo", "r");
if ( fd == NULL) {
printf("%i\n", count);
return(1);
}
count++;
}
return(0);
}
Quando eu executo, ele imprime "1021" com um status de saída de 1.
Verifique os erros do sistema:
Mais genericamente, você sempre pode verificar a saída do dmesg ou / var / log / messages em busca de erros.
Assista ao arquivo, veja se alguma coisa está mexendo com ele:
Talvez o arquivo não exista, algo está excluindo debaixo de você? Você pode querer usar o inotify para assistir a todos os eventos no arquivo, ou ferramentas que usam inotify, como incron ou inotify-tools .