Ce qui est génial à propos de Linux Kernel, c'est qu'il est open source. Si vous voulez comprendre comment implémenter quelque chose qui est similaire à lsof
pourquoi ne pas inspecter son code source (je suggère the following implementation, from Android 4.2.2 source tree, à ce qu'il est simplifié et plus facile à comprendre) ou strace
pour comprendre comment la magie se produit?
Si vous le faites, à un moment donné, vous rencontrerez les lignes suivantes
openat(AT_FDCWD, "/proc/<PID>/fd", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC)
qui vous allusion au fait que pour chaque PID qui est en cours d'exécution, procfs
est capable d'imprimer des informations sur tous les fichiers ouverts descripteurs que ce processus contient. Par conséquent, this est l'endroit où je voudrais commencer ma recherche et voyage à travers le code.
Je vote pour clore cette question hors-sujet parce que Stackoverflow n'est pas un service d'écriture de code –
J'ai besoin du concept ou de la méthode pour obtenir tous les handles de fichiers ouverts depuis l'espace du noyau –