ファイルが何回開かれたか調べてください。

ファイルが何回開かれたか調べてください。

まあ、ここに脳パズルがあります。現在、Linuxシステムで実行されているすべてのプロセス(すべてのモード)で特定のファイルを何回開いたかを確認するには?つまり、特定のファイル/inodeを参照するグローバルに(または名前空間/コンテナ内では重要ではありません)、どのくらいのファイル記述子がありますか?

これを見つける1つの方法は、lsofを使用して、問題のあるファイル名が出力に表示される回数を数えることです。しかし、これは非常にエレガントに見えず、とにかくCでプログラム的にこのようなものを実装する必要があります。

編集する:または同様ですが、他の質問かもしれません。この質問も役に立ちます。すべてのプロセスで開かれる特定のファイル(ファイルシステム上の任意のファイル)なので(おそらくこのファイルは含まれていない)、ハンドラが接続されず、何かが発生するのを待っています。 )?

ベストアンサー1

現在開いているファイルの場合、Linuxではstat()すべての/proc/*/fd/*ファイルを比較し、inode番号を比較してからすべてを読み取る必要があります/proc/*/maps(そしてinode番号も比較する必要があります)。

フラグ(比較的新しいバージョンのLinuxが必要)/proc/*/fdinfo/*と2番目の列のファイルが/proc/*/maps読み取りモードまたは書き込みモード(またはその両方、または追加...)で開かれていることを確認してください。

おすすめ記事