Programme pour lister les fichiers d’un processus sous Linux

J’ai besoin d’un programme pour répertorier tous les fichiers accessibles / ouverts par un processus sous Linux. Cela devrait fonctionner comme ça,

o / p: chemin d’access complet des fichiers auxquels le processus accède.

Ne souhaitez pas utiliser l’ utilitairelsof ‘ ou tout autre utilitaire.

Y a-t-il un moyen d’y parvenir par programmation?

Si vous ne voulez que les fichiers accessibles via des descripteurs de fichiers ouverts par processus de pid 1234, listez le /proc/1234/fd/ (la plupart des entrées sont des liens symboliques). Vous obtiendrez également des détails supplémentaires via /proc/1234/fdinfo/

Essayer

 ls -l /proc/self/fd/ 

pour avoir une idée de ce que contiennent ces fichiers.

Par programme, vous pouvez utiliser readdir (3) après opendir (3) sur ces répertoires (et readlink (2) , au moins pour les entrées dans /proc/1234/fd/ ….). Voir aussi proc (5)

Notez que /proc/ est spécifique à Linux. Certains autres Unix le possèdent (par exemple Solaris), avec des contenus, des propriétés et des sémantiques très différents.

Si vous vous souciez aussi des fichiers qui ont été ouverts et fermés par le passé par un processus, c’est beaucoup plus difficile. Voir aussi inotify (7) et ptrace (2) …

Pour convertir un chemin de fichier en un chemin de fichier absolu “canonique”, utilisez realpath (3) .