Qual è il valore massimo dell'ID processo?
Inoltre, è possibile modificare un ID processo?
Risposta accettata:
Su Linux, puoi trovare il valore PID massimo per il tuo sistema con questo:
$ cat /proc/sys/kernel/pid_max
Questo valore può essere scritto anche utilizzando lo stesso file, tuttavia il valore può essere esteso solo fino ad un massimo teorico di 32768 per sistemi a 32 bit o 4194304 per 64 bit:
$ echo 32768 > /proc/sys/kernel/pid_max
Sembra essere una pratica normativa sulla maggior parte dei sistemi a 64 bit impostare questo valore sullo stesso valore che si trova sui sistemi a 32 bit, ma questo è per convenzione piuttosto che un requisito.
Da 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).
E no, non è possibile modificare il PID di un processo in esecuzione. Viene assegnato come numero sequenziale dal kernel al momento dell'avvio del processo e da quel momento in poi è il suo identificatore. L'unica cosa che puoi fare per ottenerne uno nuovo è fare in modo che il tuo codice formi un nuovo processo e termini quello vecchio.