2017-08-21 3 views
0

Je veux écrire le code dans l'espace noyau pour trouver toutes les poignées de fichier ouvertes dans le système et le process id qui contient ces poignées.Comment obtenir tous les descripteurs de fichiers ouverts dans le code espace du noyau?

Dans l'espace utilisateur, nous pouvons le faire en utilisant l'utilitaire "lsof". De même, je veux la même chose dans l'espace noyau.

+0

Je vote pour clore cette question hors-sujet parce que Stackoverflow n'est pas un service d'écriture de code –

+0

J'ai besoin du concept ou de la méthode pour obtenir tous les handles de fichiers ouverts depuis l'espace du noyau –

Répondre

0

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.