ANSI C でプログラムを作成しています。このプログラムは、PID を引数として取り、その特定の PID がファイルを開いたり閉じたりするたびに、ファイル名に関する情報を stdout に出力する必要があります。
基本的に、/proc/PID/fd ディレクトリには、PID によって使用されるファイルへのシンボリック リンクが含まれていることがわかっています。
while ループでそのディレクトリを readdir() し、各要素を readlink() することにより、現在 PID によって開かれているすべてのファイルのファイル名を取得し、それらを stdout に出力できます。しかし、それは私の元のタスクを完全には解決しません.PIDのOpened File Descriptor Tableの変更のイベントのみをSTDOUTに出力する必要があります。さらに、新しいファイルが開かれたときだけでなく、FDが閉じられたときもキャッチする必要があります。
したがって、ユーザー空間で特定の PID のファイル アクセス イベントをキャッチするメカニズムが必要です。
また、 inotify() メカニズムを使用して IN_OPEN / IN_CLOSE をキャッチしようとしましたが、これは通常のディレクトリに対してのみ機能し、 /proc (procfs) に対しては機能しません! /proc/PID/fd ディレクトリに inotify_watch を追加すると、イベントがまったくキャッチされません (おそらく PROCFS の性質によるものです)。
私のタスクを解決するメカニズムを提案していただけますか? PSそして、私の悪い英語で申し訳ありません。