特定のファイルにマップされているプロセスの数を取得する方法はありますか?
本当は全プロセスダウン時に複数プロセスで共有しているファイルを削除したいのですが。それを行う方法はありますか?
fstatの数を取得するために関数呼び出しを試みましhard linksたが、マッピング後にファイルを閉じているためstat.st_nlink、常に0です。
最初に、 のプールを作成する必要がありますfork。次に、ハードリンク、シンボリックリンクなどのすべてのファイルに 経由でアクセスできます。struct statを参照してくださいman 2 stat。
PIDs必要な と ファイルの相対的な関係を知りたいので、次のことを行う必要があり/procます。/proc/PID/stat
次のプロジェクトはあなたの仕事を簡単にすると思います:
http://brokestream.com/procstat.html
プロセスのすべてのファイルを に保存した後、std::tupleプロセスを停止してからファイルを削除できます。
mmap() で処理されたファイルへのフル パスが /dir1/dir2/my_file であると仮定すると、プロセスが開かlsof /dir1/dir2/my_fileれていないことがわかるまで、ループで実行されるデーモンを作成できます。my_file
アプリケーションがあなたのものであり、コードを変更できると仮定すると、別のアプローチをお勧めします。1 つのアプリケーションを他のアプリケーションよりも前に開始し (他のプロセスを生成することもできます)、このアプリケーションでファイルを作成および削除します。