La valeur maximale du PID sous Linux est configurable. Vous pouvez y accéder via /proc/sys/kernel/pid_max
dossier. Ce fichier (nouveau dans Linux 2.5) spécifie la valeur à laquelle les PID s'enroulent (c'est-à-dire que la valeur dans ce fichier est supérieure d'une unité au PID maximum). La valeur par défaut de ce fichier, 32768, donne la même plage de PID que sur les noyaux précédents. La valeur dans ce fichier peut être définie sur n'importe quelle valeur jusqu'à 2^22 (PID_MAX_LIMIT, environ 4 millions).
Du point de vue de la programmation, vous devez utiliser pid_t
type pour travailler avec l'ID de processus. Vous pouvez même accéder à ses valeurs min/max en utilisant des traits entiers. Voici un exemple d'utilisation de C++ et Boost sur Linux 2.6.X exécuté sur la plate-forme x86_64 :
$ cat test.cpp
#include <sys/types.h>
#include <iostream>
#include <boost/integer_traits.hpp>
using namespace std;
int main ()
{
cout << "pid_t max = " << boost::integer_traits<pid_t>::const_max << endl;
}
$ ./test
pid_t max = 2147483647
À partir du proc(5)
page de manuel :
/proc/sys/kernel/pid_max
(depuis Linux 2.5.34)Ce fichier spécifie la valeur à laquelle les PID s'enroulent (c'est-à-dire que la valeur dans ce fichier est supérieure d'une unité au PID maximum). Les PID supérieurs à cette valeur ne sont pas alloués ; ainsi, la valeur de ce fichier agit également comme une limite à l'échelle du système sur le nombre total de processus et de threads. La valeur par défaut de ce fichier, 32768, donne la même plage de PID que sur les noyaux précédents. Sur les plateformes 32 bits, 32768 est la valeur maximale de pid_max. Sur les systèmes 64 bits,
pid_max
peut être défini sur n'importe quelle valeur jusqu'à 2^22 (PID_MAX_LIMIT
, environ 4 millions).
C'est 32768 par défaut, vous pouvez lire la valeur sur votre système en /proc/sys/kernel/pid_max
.
Et vous pouvez définir une valeur plus élevée sur les systèmes 64 bits (jusqu'à 2 =4 194 304) avec :
echo 4194304 > /proc/sys/kernel/pid_max
En savoir plus ici :
http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (via archive.org)