Vous vous demandez si la vérification de / proc / N est un moyen sûr / fiable de voir si le PID N est en cours d'exécution?
Andy Lester,
Je me demandais si théoriquement il pourrait y avoir des résidus dans / proc après la fin du processus.
David Dai
Réponses:
25
S'il /procne s'agit que du procmontage (et que personne ne joue des tours avec des superpositions), non, un dossier basé sur pid n'existe que tant que le processus correspondant existe dans un certain état (y compris en tant que zombie). En fait, juste avant de retourner une entrée de répertoire pour un identifiant de processus, le noyau revalide l'existence du processus - donc au moment où une entrée de répertoire est retournée, le processus correspondant est toujours là. L'accès à un répertoire commence également par la recherche du processus correspondant. (Si les numéros de ligne changent, recherchez proc_pident_instantiateet proc_pident_lookup.)
Vous pouvez rencontrer des problèmes causés par la liste /procet l'utilisation des résultats plus tard (même quelques microsecondes plus tard): un processus peut être en cours d'exécution lorsque vous répertoriez /procet vous arrêter avant d'agir sur les résultats.
Réponses:
S'il
/proc
ne s'agit que duproc
montage (et que personne ne joue des tours avec des superpositions), non, un dossier basé sur pid n'existe que tant que le processus correspondant existe dans un certain état (y compris en tant que zombie). En fait, juste avant de retourner une entrée de répertoire pour un identifiant de processus, le noyau revalide l'existence du processus - donc au moment où une entrée de répertoire est retournée, le processus correspondant est toujours là. L'accès à un répertoire commence également par la recherche du processus correspondant. (Si les numéros de ligne changent, recherchezproc_pident_instantiate
etproc_pident_lookup
.)Vous pouvez rencontrer des problèmes causés par la liste
/proc
et l'utilisation des résultats plus tard (même quelques microsecondes plus tard): un processus peut être en cours d'exécution lorsque vous répertoriez/proc
et vous arrêter avant d'agir sur les résultats.la source
wait()
n'ont pas été appelés?ps
affiche le processus, son/proc
répertoire devrait exister.ps
accéder/proc
à l'information qu'il affiche.