Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UNIX : LISTER LE NOMBRE DE PROCESSUS TOURNANT SUR LA MACHINE


Information sur la source

Description

Salut à tous,

Petite fonction simple mais utile et commentée qui retourne le nombre de processus tournant sur la machine
 

Source

  • // Fonction permettant de lister le nombre de processus tournant sur la machine
  • // Utilise :
  • // cstdlib pour la fonction atoi()
  • // dirent.h pour les fonctions opendir(), readdir() et closedir()
  • int processNumber()
  • {
  • // Déclaration des variables utilisés par la fonction
  • struct dirent *Read;
  • DIR *Repo;
  • Repo = opendir("/proc"); // Ouverture du pseudo-répertoire /proc
  • int processNumber = 0; // On initialise à zéro (pour incrémenter plus tard)
  • while ((Read = readdir(Repo))) // Lecture des pseudo-répertoires
  • {
  • if(atoi(Read->d_name) > 0 && atoi(Read->d_name) < 32768) // On prends seulement les pseudo-répertoires numériques (PID, donc)
  • {
  • processNumber++; // Incrémente le nombre de processus
  • }
  • }
  • closedir(Repo);
  • return processNumber; // Et on retourne le nombre de PID (Donc de processus) ;)
  • }
// Fonction permettant de lister le nombre de processus tournant sur la machine
// Utilise :
// cstdlib pour la fonction atoi()
// dirent.h pour les fonctions opendir(), readdir() et closedir()

int processNumber()
{
	// Déclaration des variables utilisés par la fonction
	struct dirent *Read;
	DIR *Repo;
	
	Repo = opendir("/proc"); // Ouverture du pseudo-répertoire /proc
	int processNumber = 0; // On initialise à zéro (pour incrémenter plus tard)
	while ((Read = readdir(Repo))) // Lecture des pseudo-répertoires
	{
		if(atoi(Read->d_name) > 0 && atoi(Read->d_name) < 32768) // On prends seulement les pseudo-répertoires numériques (PID, donc)
		{
			processNumber++; // Incrémente le nombre de processus
		}
	}
	closedir(Repo);
	return processNumber; // Et on retourne le nombre de PID (Donc de processus) ;) 
}

Conclusion

Voilà :)
 

Commentaires et avis

signaler à un administrateur
Commentaire de max12 le 17/08/2008 06:11:15 administrateur CS

Il existe pas des manières plus belle de faire ça que de parser du texte provenant du promp :S

signaler à un administrateur
Commentaire de MuPuF le 17/08/2008 07:57:34

??? Y'a pas de parsing là, à chaque processus correspond un fichier dans /proc, il ne fait qu'énumérer tout les fichiers de proc qui sont des numéros (les PIDs). Ainsi, il récupère bien les processus courants.

signaler à un administrateur
Commentaire de MuPuF le 17/08/2008 07:58:59

[mupuf@cathaou ~]$ ls /proc
1     2299  4132  4250  4333  821          fb           net
10    3     4133  4252  4885  831          filesystems  pagetypeinfo
1008  3293  4134  4254  4886  835          fs           partitions
1087  3978  4135  4257  4930  9            interrupts   scsi
1088  4     4147  4261  4947  943          iomem        self
11    4000  4151  4274  5     acpi         ioports      slabinfo
12    4015  4158  4279  5460  asound       irq          stat
13    4018  4159  4282  5488  buddyinfo    kallsyms     swaps
14    4031  4170  4283  5489  bus          kcore        sys
15    4034  4194  4286  5501  cgroups      key-users    sysrq-trigger
16    4037  4214  4290  5503  cmdline      kmsg         sysvipc
17    4038  4217  4299  5504  config.gz    kpagecount   timer_list
1769  4061  4218  4301  5506  cpuinfo      kpageflags   timer_stats
1784  4065  4221  4305  6     crypto       loadavg      tty
18    4066  4226  4308  7     devices      locks        uptime
19    4076  4229  4311  8     diskstats    meminfo      version
2     4091  4231  4313  807   dma          misc         vmallocinfo
20    4094  4245  4317  808   dri          modules      vmstat
2006  4130  4246  4328  810   driver       mounts       zoneinfo
21    4131  4247  4329  819   execdomains  mtrr

Pour te montrer ce qu'il y a dans /proc, tu n'auras pas besoin de redémarrer pour rien ;)

signaler à un administrateur
Commentaire de max12 le 17/08/2008 20:16:28 administrateur CS 9/10

Pardons j'étaits dans le champs en effet :P désolé

signaler à un administrateur
Commentaire de MuPuF le 18/08/2008 00:11:46

lool, pas bien grave ;)
Tout est fichier sous linux, pas d'exception ;)

signaler à un administrateur
Commentaire de _Jonathan le 18/08/2008 11:58:06

cette méthode est très bien adaptée.
/proc est un pseudo systeme de fichier qui est dans la mémoire. Aucun soucis de performances...

signaler à un administrateur
Commentaire de tibur le 18/08/2008 14:31:35

> MuPuF :
> Tout est fichier sous linux, pas d'exception ;)

Et les interfaces réseaux ? (eth0, eth1, ...)

signaler à un administrateur
Commentaire de MuPuF le 18/08/2008 16:26:04

Tu m'as eu, je les avais oubliés ceux là :s

signaler à un administrateur
Commentaire de max12 le 18/08/2008 23:13:35 administrateur CS

cassé ! lol

Non sérieusement :P C'est assez bizarre ce concept quand on est habitué a Windows au API etc.... :O

signaler à un administrateur
Commentaire de MuPuF le 19/08/2008 16:45:27

Le concept est tjs de factoriser le code, plus le code est utilisé, plus il est débuggé et donc plus fiable et stable est le système. C'est comme ça que je le prend.
Et puis c'est vrai que du coup, c'est super simple, on peut meme coder en bash (c'est moche et affreux mais c'est possible).

signaler à un administrateur
Commentaire de jojo930 le 20/08/2008 00:34:07

Tant de commentaires sur une source aussi simple, ça fait plaisir, lol.
En effet, la gestion de processus sous UNIX n'a strictement rien à voir avec Windows, mais je trouve cette manière bien plus puissante.

Merçi de vos commentaires.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

processus [ par sebseb42 ] Bonjour,voila, j'utilise l'API Process Status (PSAPI) pour lister tout les process existant ainsi que leur modules...La seul information que j'arrive lister le contenu d'un repertoire (UNIX et WINDOWS) [ par ox2 ] Salut a tous !Je souhaite lister le contenu d'un repertoire en multiplateforme, pour en extraire la liste des repertoires presents.Sous windows, c'es trouver le bon process ID!!! [ par anthraxx ] Je voudrais terminer un processus (avec TerminateProcess) dont je ne connais que le nom du fichier executable (mdm.exe par exemple), et le processus n liste process [ par rodrigos ] Comment peut-on connaitre la liste des process en cours et le cas échéant en arrêter un.je travaille sous Nt4merci lister contenu d'un repertoire sous unix et windows [ par liloupucienne ] Bonjour, je suis en train de developper un soft qui traite des fichiers texte et je voulais offrir la possibilite de donner le chemin du repertoir qui lister repertoire unix windows [ par liloupucienne ] Bonjour, je suis en train de developper un soft qui traite des fichiers texte et je voulais offrir la possibilite de donner le chemin du repertoir qui 3 questions [ par morgandetoi06 ] bonjourvoila donc j ai 3 questions:-comment desactiver le ctrl+alt+supr ?-comment faire pour qu un programme lancé ne s affiche pas dans la liste des c++ - Lister les processus sous linux [ par kriss51 ] Bonjour à tous,Je suis sous l'environnement LINUX et je tente en C++ de lister tous les processus s'exécutant sur la machine.Savez-vous comment faire Processus et utilisateur [ par Palex ] bonjourj'ai recuperer dans la msdn la focntion pour lister tous les processus, mais maintenant&nbsp;j'aimerais ne lister que les process de l utilisat Lister les processus windows [ par shadow1779 ] voila j'aimerai savoir si il existe une fonction pour savoir tout les processus lanc&#233;s sous windows, mon but serait en fait de faire que si un pr


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.