メッセージをファイルに書き込む C++ プログラムがあります。場合によっては、このログファイルを含むディレクトリの名前が変更または削除され、同じ名前のフォルダが再作成されます。
デーモンは、このようなことが発生していることをどのように検出してログを再度開くことができますか?つまり、私はinotifyを使用しています(またはより一般的には次のようにこれを行うことができることを知っています)。無料イベント)、しかしもっと簡単なことがありますか?
私たちのPythonプログラムは以下を使用しますlogging.handlers.WatchFileHandler()
。 - C++に似たものはありますか?変更についてすぐに知る必要はありません。プログラムに書き込む新しいメッセージがある場合にのみ...
答え1
私の考えの唯一の移植可能な方法は、fstat()
すでにファイル記述子(一度)とstat()
元のファイル名(新しい書き込み前)を開いて結果を比較することです。
失敗した場合、またはstat()
両方の呼び出しがst_dev
同じフィールドに入力されない場合は、新しいログエントリを作成する前にログファイルを再度開きます。st_ino