Question

Je souhaite surveiller un fichier journal en cours d'écriture par une application. Je souhaite traiter le fichier ligne par ligne au fur et à mesure de son écriture ou peu après. Je n'ai pas trouvé le moyen de détecter qu'un fichier a été étendu après avoir atteint eof.

Le code doit fonctionner sur Mac et PC, et peut être dans n’importe quel langage, bien que je sois plus familier avec C ++ et Perl.

Quelqu'un a-t-il une suggestion quant à la meilleure façon de procéder?

Était-ce utile?

La solution

En Perl, le module Fichier :: Queue fait exactement ce dont vous avez besoin.

Autres conseils

Une réponse assez générique:

La plupart des langues, sur EOF, indiquent qu'aucune donnée n'a été lue. Vous pouvez réessayer de lire après un intervalle et si le fichier a grossi depuis, le système d'exploitation renvoie cette fois des données.

L'essence de tail -f est la boucle suivante:

open IN, $file;
while(1) {
  my $line = <IN>;
  if($line) {
    #process line...
  } else {
    sleep(1);
    seek(IN,0,1);
  }
}
close IN;

L'appel chercher est pour effacer le drapeau EOF.

Vous devriez pouvoir utiliser lire le standard io from tail -f

J'aurais pensé que les actions seraient affichées via tee et ensuite (ou en utilisant la boucle ci-dessus ) le fichier créé par Tee utilisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top