Der Maximalwert der PID in Linux ist konfigurierbar. Sie können über /proc/sys/kernel/pid_max
darauf zugreifen Datei. Diese Datei (neu in Linux 2.5) gibt den Wert an, bei dem PIDs umlaufen (d. h. der Wert in dieser Datei ist um eins größer als die maximale PID). Der Standardwert für diese Datei, 32768, führt zu demselben PID-Bereich wie bei früheren Kerneln. Der Wert in dieser Datei kann auf jeden Wert bis zu 2^22 (PID_MAX_LIMIT, ungefähr 4 Millionen) eingestellt werden.
Aus Programmiersicht müssen Sie pid_t
verwenden geben Sie ein, um mit der Prozess-ID zu arbeiten. Sie können sogar auf seine Min/Max-Werte zugreifen, indem Sie ganzzahlige Merkmale verwenden. Hier ist ein Beispiel für die Verwendung von C++ und Boost unter Linux 2.6.X, das auf einer x86_64-Plattform ausgeführt wird:
$ 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
Aus dem proc(5)
Manpage:
/proc/sys/kernel/pid_max
(seit Linux 2.5.34)
Diese Datei gibt den Wert an, bei dem PIDs umlaufen (d. h. der Wert in dieser Datei ist um eins größer als die maximale PID). PIDs größer als dieser Wert werden nicht zugewiesen; Daher fungiert der Wert in dieser Datei auch als systemweite Grenze für die Gesamtzahl der Prozesse und Threads. Der Standardwert für diese Datei, 32768, führt zu demselben PID-Bereich wie bei früheren Kerneln. Auf 32-Bit-Plattformen ist 32768 der Höchstwert für pid_max. Auf 64-Bit-Systemen pid_max
kann auf einen beliebigen Wert bis zu 2^22 (PID_MAX_LIMIT
, ungefähr 4 Millionen).
Standardmäßig ist es 32768, Sie können den Wert auf Ihrem System in /proc/sys/kernel/pid_max
ablesen .
Und Sie können den Wert auf 64-Bit-Systemen höher einstellen (bis zu 2 =4.194.304) mit:
echo 4194304 > /proc/sys/kernel/pid_max
Lesen Sie hier mehr:
http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (über archive.org)