8

アプリケーションによって書き込まれているログ ファイルを監視したいと考えています。ファイルが書き込まれている間、またはその直後に、ファイルを 1 行ずつ処理したいと考えています。eof に達した後にファイルが拡張されたことを検出する方法が見つかりませんでした。

コードは Mac と PC で動作する必要があり、どの言語でもかまいませんが、私は C++ と Perl に最も精通しています。

それを行うための最良の方法についての提案はありますか?

4

5 に答える 5

7

Perl では、File::Tailモジュールが必要なことを正確に実行します。

于 2008-09-15T13:25:48.533 に答える
3

の本質tail -fは次のループです。

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

シーク呼び出しは、EOF フラグをクリアすることです。

于 2008-09-15T14:34:05.810 に答える
3

一般的な十分な答え:

ほとんどの言語は、EOF で、データが読み取られなかったことを返します。一定の間隔を置いてから読み取りを再試行できます。それ以降、ファイルが大きくなった場合は、オペレーティング システムからデータが返されます。

于 2008-09-15T13:28:33.470 に答える
2

tail -f から標準 io を読み取ることができるはずです

于 2008-09-15T13:29:25.420 に答える
0

私はティーを介してアクションを出力することを考えていたでしょ

于 2008-09-15T15:34:27.130 に答える