Par programme lire tous les processus de l'état à partir de /proc
Je veux sauver tous les processus en cours d'exécution dans un fichier à l'aide de /proc dossier. à la lecture de certaines questions et de réponses ici, je pense que je devrais utiliser le pstatus struct afin de déterminer les champs que je souhaite sauvegarder (corrigez-moi si je me trompe?) mais je ne sais pas comment je peut efficacement boucle par tous les processus en cours d'exécution.
- Vous "lire" à partir de /proc exactement comme vous l'aviez lu un autre ensemble de fichiers et sous-répertoires. Juste fopen() fichier(s) qui vous intéresse et d'analyser les données de texte. Voici un excellent article: linuxjournal.com/article/8381
- Quelle est votre question?
- Je veux savoir comment je peux ouvrir TOUS les dossiers. Je ne veux pas juste d'ouvrir un ou deux.
- La lecture de l'information de /proc et de l'enregistrer dans un fichier se fait habituellement avec Linux outils de ligne de commande. Avez-vous besoin d'écrire un programme C qui est-il?
- Je suppose que parcourir le code source pour
ps
pourrait être instructif, car il sonne comme vous tentez de le réécrire... - Oui je dois écrire un programme pour montrer le processus de programmation.
- J'ai pensé que c'est redondant et je n'aurais pas pensé qu'au lieu de ps, si ce n'était pas pour une affectation.
Vous devez vous connecter pour publier un commentaire.
Dans Linux de l'état du processus est enregistré dans
/proc/PID/status
pseudo-fichier et représentés sous forme de texte (les autres OS ont complètement différent de la structure de leur procfs):Si vous avez besoin d'un "analyseur" de ce fichier:
De lire tous les processus que vous avez à utiliser
opendir()
/readdir()
/closedir()
et ouvert uniquement les répertoires qui ont des caractères numériques (d'autres sont variables sysctl, etc.):Alternativement, vous pouvez utiliser procps outils qui sont déjà mis en œuvre.
Cet extrait de code ci-dessous appelle deux programmes en C qui ne vient que: