Depuis un task_struct
point de vue, les threads d'un processus ont le même chef de groupe de threads (group_leader
en task_struct
), alors que les processus enfants ont un leader de groupe de threads différent (chaque processus enfant individuel).
Ces informations sont exposées à l'espace utilisateur via le /proc
système de fichiers. Vous pouvez retrouver les parents et les enfants en regardant le ppid
champ en /proc/${pid}/stat
ou .../status
(cela donne le pid parent); vous pouvez tracer les threads en regardant le tgid
champ en .../status
(cela donne l'identifiant du groupe de threads, qui est également le pid du chef de groupe). Les threads d'un processus sont rendus visibles dans le /proc/${pid}/task
répertoire :chaque thread obtient son propre sous-répertoire. (Chaque processus a au moins un thread.)
En pratique, les programmes souhaitant garder une trace de leurs propres threads s'appuieraient sur les API fournies par la bibliothèque de threads qu'ils utilisent, au lieu d'utiliser des informations spécifiques au système d'exploitation. Généralement sur les systèmes de type Unix, cela signifie utiliser des pthreads.
-
Cela exécute le
top
commande avec quelques options supplémentaires :top -H -b -n 1
- Le
-H
L'argument indique à top d'afficher chaque thread individuel. Normalement, top résume tous les threads sous leur processus parent. - Le
-b
L'argument fait que top s'exécute en mode batch - les informations sont collectées, affichées, puis transférées vers stdout au lieu de s'exécuter en mode interactif et d'actualiser les données affichées. - Avec le
-b
option, l'utilisateur doit indiquer à top combien de fois exécuter, cela se fait avec le-n
argument et un argument final avec le nombre de fois à exécuter.
Donc
top -H -b -n 1
ordonne au système "d'exécuter en haut, d'afficher les threads individuels, de s'exécuter en mode batch et de ne s'exécuter qu'une seule fois". - Le
-
Le
ps
La commande rapporte un instantané des processus en cours d'exécution.ps -eLf
Le
-eLf
argument (peut être utilisé comme-e -L -f
ainsi) se décompose comme suit :e
ditps
pour afficher tous les processus, quel que soit leur propriétaire ou leur état actuel :actif, en veille, en pause, en attente d'E/S, etc.L
indiqueps
pour afficher les discussions individuelles- le
f
indiqueps
pour formater la sortie comme une liste au format complet, et en conjonction avec leL
argument les colonnes NLWP (nombre de threads) et LWP (ID de thread) sont ajoutées à la sortie.