¿Cuál es el valor máximo de la ID del proceso?
Además, ¿es posible cambiar una ID de proceso?
¿Cuál es el valor máximo de la ID del proceso?
Además, ¿es posible cambiar una ID de proceso?
Respuestas:
En Linux, puede encontrar el valor PID máximo para su sistema con esto:
$ cat /proc/sys/kernel/pid_max
Este valor también se puede escribir usando el mismo archivo, sin embargo, el valor solo se puede extender hasta un máximo teórico de 32768 para sistemas de 32 bits o 4194304 para 64 bits:
$ echo 32768 > /proc/sys/kernel/pid_max
Parece ser una práctica normativa en la mayoría de los sistemas de 64 bits establecer este valor en el mismo valor que se encuentra en los sistemas de 32 bits, pero esto es por convención en lugar de un requisito.
De 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).
Y no, no puede cambiar el PID de un proceso en ejecución. El núcleo lo asigna como un número secuencial en el momento en que comienza el proceso y ese es su identificador a partir de ese momento. Lo único que puede hacer para obtener uno nuevo es que su código bifurque un nuevo proceso y finalice el anterior.
Otras respuestas han explicado
/proc/sys/kernel/pid_max
para Linux yPero la pregunta no especificaba un sistema operativo. Así que aquí hay algunos otros:
pidmax
en /etc/system
- que por defecto a 30.000 y que se puede fijar en cualquier lugar entre 266 y 999.999. Tenga en cuenta que esto no max_nprocs
lo es, que es un parámetro ajustable del núcleo con una función sutilmente diferente.process_id_min
y process_id_max
prescriben el rango de ID de proceso permitidos.En FreeBSD el valor de PID está entre 0 y 99999 según intro(2)
(enlace) . Aquí hay una cita del manual:
Identificacion de proceso.
Cada proceso activo en el sistema se identifica de manera única por un número entero no negativo llamado ID de proceso. El rango de esta ID es de 0 a 99999.
Si desea leer el código fuente por su cuenta, PID_MAX
se define en sys/sys/proc.h
(enlace) .