Qual è il valore massimo dell'ID processo?
Inoltre, è possibile modificare un ID processo?
Qual è il valore massimo dell'ID processo?
Inoltre, è possibile modificare un ID processo?
Risposte:
Su Linux, puoi trovare il valore PID massimo per il tuo sistema con questo:
$ cat /proc/sys/kernel/pid_max
Questo valore può anche essere scritto usando 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 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 questo è l'identificatore da quel momento in poi. L'unica cosa che potresti fare per ottenerne uno nuovo è avere il tuo fork di codice un nuovo processo e terminare quello vecchio.
Altre risposte hanno spiegato
/proc/sys/kernel/pid_max
per Linux eMa la domanda non specificava un sistema operativo. Quindi eccone alcuni altri:
pidmax
in /etc/system
- che per impostazione predefinita è 30.000 e che può essere impostato tra 266 e 999.999. Si noti che non lo è max_nprocs
, che è un parametro sintonizzabile del kernel con una funzione leggermente diversa.process_id_min
e process_id_max
prescrivono la gamma di ID di processo consentiti.Su FreeBSD il valore di PID è compreso tra 0 e 99999 secondo intro(2)
(link) . Ecco una citazione dal manuale:
ID processo.
Ogni processo attivo nel sistema è identificato in modo univoco da un numero intero non negativo chiamato ID processo. L'intervallo di questo ID è compreso tra 0 e 99999.
Se vuoi leggere il codice sorgente da solo, allora PID_MAX
è definito in sys/sys/proc.h
(link) .