PID Maximum sous Linux
je transfère une application de Tru64 à Linux et elle utilise PID_MAX défini dans des limites.h.
Linux n'a pas cette définition.
Comment trouver PID_MAX dans c sans lire /proc/sys/kernel/pid_max
à la main?
Est-il une bibliothèque?
3 réponses
32768 par défaut, vous pouvez lire la valeur sur votre système /proc/sys/kernel/pid_max
.
Et vous pouvez définir la valeur plus élevée (jusqu'à 222 = 4,194,304 sur les machines 32 bits) avec:
echo 4194303 > /proc/sys/kernel/pid_max
Lire la suite ici:
http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (via archive.org)
la valeur maximale du PID sous Linux est configurable. Vous pouvez y accéder en auge /proc/sys/kernel/pid_max
fichier. Ce fichier (nouveau sous Linux 2.5) spécifie la valeur à laquelle le PID s'enroule (i.e., la valeur de ce fichier est supérieure 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 à n'importe quelle valeur jusqu'à 2^22 (PID_MAX_LIMIT, environ 4 millions).
du point de vue de la programmation, vous utiliser pid_t
tapez 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 de faire cela en utilisant C++ et Boost sur Linux 2.6.X tournant 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
proc(5)
page de manuel:
/proc/sys/kernel/pid_max
(depuis Linux 2.5.34)ce fichier spécifie la valeur à laquelle le PID s'enroule (i.e., la valeur dans ce fichier est une plus grande que le PID maximum). Les pid supérieurs à cette valeur ne sont pas attribués; ainsi, la valeur dans ce fichier agit aussi 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 la version précédente. noyau. Sur les plateformes 32 bits, 32768 est la valeur maximale de pid_max. Sur les systèmes 64 bits,
pid_max
peut être réglé à n'importe quelle valeur jusqu'à 2^22 (PID_MAX_LIMIT
, environ 4 millions).