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?

44
demandé sur camlspotter 2011-06-09 18:09:30

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)

74
répondu Exos 2013-11-18 18:03:46

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
11
répondu 2011-06-09 14:21:06

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).

2
répondu Jonathon Reinhart 2015-12-09 02:56:41