Czytanie już otwartego pliku w sposób ciągły przy użyciu C
Wdrażam niską wagę aplikacji, w której bardzo często muszę otwierać i czytać dane / proc / pid lub tid / task / stat. Jeśli aplikacja jest wielowątkowa, muszę przeczytać więcej plików statystyk. Otwieranie, czytanie i zamykanie sprawia, że moja aplikacja monitorująca działa naprawdę wolno. Czy istnieje rozwiązanie pozwalające uniknąć wielokrotnego otwierania pliku i wciąż w stanie odczytać zaktualizowaną zawartość?
Przeprowadziłem następujący eksperyment, ale nie widzę sukcesu. Zmieniam dane w „test.txt”, ale nowe dane nie są odczytywane. Czy to dlatego, że plik nie jest aktualizowany w pamięci? Co się stanie, gdy zmodyfikuję i zapisz „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;
}