Solución:
Es 32768 por defecto, puede leer el valor en su sistema en /proc/sys/kernel/pid_max
.
Y puede establecer el valor más alto en sistemas de 64 bits (hasta 222 = 4.194.304) con:
echo 4194304 > /proc/sys/kernel/pid_max
Leer más aquí:
http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (a través de archive.org)
El valor máximo del PID en Linux es configurable. Puedes acceder a él a través /proc/sys/kernel/pid_max
expediente. Este archivo (nuevo en Linux 2.5) especifica el valor en el que se envuelven los PID (es decir, el valor en este archivo es uno mayor que el PID máximo). El valor predeterminado para este archivo, 32768, da como resultado el mismo rango de PID que en los núcleos anteriores. El valor de este archivo se puede establecer en cualquier valor hasta 2 ^ 22 (PID_MAX_LIMIT, aproximadamente 4 millones).
Desde la perspectiva de la programación, debes usar pid_t
escriba para trabajar con el ID de proceso. Incluso puede acceder a sus valores mínimo / máximo utilizando rasgos enteros. Aquí hay un ejemplo de cómo hacerlo usando C ++ y Boost en Linux 2.6.X ejecutándose en la plataforma 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
Desde el proc(5)
página man:
/proc/sys/kernel/pid_max
(desde Linux 2.5.34)Este archivo especifica el valor en el que se envuelven los PID (es decir, el valor en este archivo es uno mayor que el PID máximo). Los PID mayores que este valor no se asignan; por lo tanto, el valor de este archivo también actúa como un límite de todo el sistema en el número total de procesos y subprocesos. El valor predeterminado para este archivo, 32768, da como resultado el mismo rango de PID que en los núcleos anteriores. En plataformas de 32 bits, 32768 es el valor máximo de pid_max. En sistemas de 64 bits,
pid_max
se puede configurar en cualquier valor hasta 2 ^ 22 (PID_MAX_LIMIT
, aproximadamente 4 millones).