2017-10-14 12 views
-1

J'aimerais passer en revue tous les identifiants de processus possibles, mais pour cela, il me faudrait connaître la limite de la table de processus. Comment puis-je trouver ça?Minix: Détermination de la taille de la table de processus

Mon idée est de faire quelque chose comme

while (counter < table size) 
{ 
    do something 
} 
+0

Bienvenue sur Stack Overflow! S'il vous plaît lisez sur [Comment poser une bonne question] (https://stackoverflow.com/help/how-to-ask). Votre question doit être spécifique et votre code pertinent doit être [minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve). –

Répondre

0

Je pense qu'il n'y a pas d'API posix pour obtenir ces informations directement en C, vous devez fonction popen() pour appeler la ligne de commande pour obtenir ce genre d'info, Je ne recommande pas system() bien qu'il soit similaire avec popen (Display all process using a posix function).

le nombre maximum de processus du système peut être réglé/vérifier par la commande ulimit.

popen("ulimit -a max user processes","r"); 

ou vous pouvez vérifier le numéro de max dans ids courant des processus. (Ps aux affiche tous les processus, sed trouver la dernière ligne, et le processus trouver awk id)

FILE *fp = popen("ps aux|sed -n '$p'|awk '{print $2F}'","r"); 
if(NULL!=fp) 
{ 
    char buff[1024]; 
    fgets(buff,1024,fp); 
    printf("%s\n",buff); 
    pclose(fp); 
}