0

常に変化するログファイルを監視するコードがあります。コードは現在正常に実行されていますが、ファイルが移動または削除されると、コードはまだファイル ポインターを使用して読み取ろうとしています。

fr = fopen (filename, "rt");
while (1) {
  if(fgets(buffer, 500, fr) != NULL) {
       //do something  
  } else {
    sleep(1); //wait for data to come
  }
}

ファイルが移動/削除されたかどうかを検出して終了できるようにするにはどうすればよいですか?

4

1 に答える 1

1

問題を解決するために、try-catch が必要になる場合があります。ファイルが移動されると(ファイルが別のプロセスによって開かれているため、一部のOSでは許可されないため、OSに依存していると思います)、例外が発生し、それをキャッチすると、何をすべきかを決定できます。

(私はそれをテストする必要がありますが、あなたの場合はどうすべきだと思います)

于 2015-09-01T07:18:32.337 に答える