Was ist der Maximalwert der Prozess-ID?
Ist es auch möglich, eine Prozess-ID zu ändern?
Was ist der Maximalwert der Prozess-ID?
Ist es auch möglich, eine Prozess-ID zu ändern?
Antworten:
Unter Linux können Sie den maximalen PID-Wert für Ihr System folgendermaßen ermitteln:
$ cat /proc/sys/kernel/pid_max
Dieser Wert kann auch mit derselben Datei geschrieben werden. Der Wert kann jedoch nur bis zu einem theoretischen Maximum von 32768 für 32-Bit-Systeme oder 4194304 für 64-Bit-Systeme erweitert werden:
$ echo 32768 > /proc/sys/kernel/pid_max
Es scheint bei den meisten 64-Bit-Systemen üblich zu sein, diesen Wert auf den gleichen Wert wie bei 32-Bit-Systemen zu setzen, dies ist jedoch eher eine Konvention als eine Anforderung.
Von man 5 proc
:
/proc/sys/kernel/pid_max This file (new in Linux 2.5) specifies the value at which PIDs wrap around (i.e., the value in this file is one greater than the maximum PID). The default value for this file, 32768, results in the same range of PIDs as on earlier kernels. On 32-bit platfroms, 32768 is the maximum value for pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22 (PID_MAX_LIMIT, approximately 4 million).
Und nein, Sie können die PID eines laufenden Prozesses nicht ändern. Es wird vom Kernel zu Beginn des Prozesses als fortlaufende Nummer zugewiesen und ist ab diesem Zeitpunkt seine Kennung. Das einzige, was Sie tun können, um ein neues zu erhalten, ist, Ihren Code-Fork einem neuen Prozess zu unterziehen und den alten zu beenden.
Andere Antworten haben erklärt
/proc/sys/kernel/pid_max
für Linux undIn der Frage wurde jedoch kein Betriebssystem angegeben. Also hier sind einige andere:
pidmax
in /etc/system
-, der standardmäßig 30.000 beträgt und zwischen 266 und 999.999 festgelegt werden kann. Beachten Sie, dass dies kein max_nprocs
durch den Kernel einstellbarer Parameter mit einer geringfügig anderen Funktion ist.process_id_min
und process_id_max
vorgeschrieben.Unter FreeBSD liegt der Wert von PID laut intro(2)
(link) zwischen 0 und 99999 . Hier ist ein Zitat aus dem Handbuch:
Prozess ID.
Jeder aktive Prozess im System wird durch eine nicht negative Ganzzahl, die als Prozess-ID bezeichnet wird, eindeutig identifiziert. Der Bereich dieser ID liegt zwischen 0 und 99999.
Wenn Sie den Quellcode selbst lesen möchten, PID_MAX
ist in sys/sys/proc.h
(Link) definiert .