Jaká je maximální hodnota ID procesu?
Je také možné změnit ID procesu?
Přijatá odpověď:
V Linuxu můžete zjistit maximální hodnotu PID pro váš systém takto:
$ cat /proc/sys/kernel/pid_max
Tuto hodnotu lze také zapsat pomocí stejného souboru, avšak hodnotu lze rozšířit pouze na teoretické maximum 32768 pro 32bitové systémy nebo 4194304 pro 64bitové systémy:
$ echo 32768 > /proc/sys/kernel/pid_max
Zdá se, že u většiny 64bitových systémů je normativní praxí nastavit tuto hodnotu na stejnou hodnotu, jakou mají 32bitové systémy, ale jedná se spíše o konvenci než o požadavek.
Z 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).
A ne, nemůžete změnit PID běžícího procesu. To je přiřazeno jako pořadové číslo jádrem v době spuštění procesu a to je jeho identifikátor od té doby. Jediná věc, kterou můžete udělat pro získání nového, je nechat váš kód rozvětvit nový proces a ukončit ten starý.