Lendo arquivo já aberto continuamente usando C
Eu estou implementando um aplicativo de baixo peso, onde eu tenho que abrir e ler os detalhes / proc / pid ou tid / task / stat com muita freqüência. Se o aplicativo for multithreaded, preciso ler mais arquivos stat. Então, abrir, ler e fechar faz com que meu aplicativo de monitoramento fique muito lento. Existe uma solução para evitar a abertura do arquivo repetidamente e ainda capaz de ler o conteúdo atualizado?
Eu fiz o seguinte experimento, mas não vejo sucesso. Eu mudo os dados em "test.txt", mas os novos dados não são lidos. É porque o arquivo não está atualizado na memória? O que acontece quando eu modifico e salvo "test.txt"?
#include <stdio.h>
int main()
{
FILE * pFile;
char mystring [100];
pFile = fopen ("test.txt" , "r");
while(1){
if (pFile == NULL) perror ("Error opening file");
if ( fgets (mystring , 100 , pFile) != NULL ){
puts (mystring);
fseek ( pFile , 0 , SEEK_SET );
}
sleep(1);
}
fclose (pFile);
return 0;
}