Quelle est la valeur maximale de l'ID de processus?
De plus, est-il possible de changer un ID de processus?
Quelle est la valeur maximale de l'ID de processus?
De plus, est-il possible de changer un ID de processus?
Réponses:
Sous Linux, vous pouvez trouver la valeur PID maximale de votre système avec ceci:
$ cat /proc/sys/kernel/pid_max
Cette valeur peut également être écrite à l'aide du même fichier. Toutefois, elle ne peut être étendue que jusqu'à un maximum théorique de 32 768 pour les systèmes 32 bits ou de 4194304 pour les systèmes 64 bits:
$ echo 32768 > /proc/sys/kernel/pid_max
Il semble être une pratique normative sur la plupart des systèmes 64 bits de définir cette valeur sur la même valeur que celle trouvée sur les systèmes 32 bits, mais il s'agit d'une convention plutôt que d'une exigence.
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).
Et non, vous ne pouvez pas changer le PID d'un processus en cours d'exécution. Il est assigné sous forme de numéro séquentiel par le noyau au moment du démarrage du processus et correspond à son identifiant à partir de cet instant. La seule chose que vous puissiez faire pour en obtenir un nouveau est d’avoir votre code un nouveau processus et de mettre fin à l’ancien.
D'autres réponses ont expliqué
/proc/sys/kernel/pid_max
pour Linux etMais la question ne spécifiait pas de système d'exploitation. Alors voici quelques autres:
pidmax
en /etc/system
- que par défaut et 30 000 qui peut être réglée entre 266 et 999999. Notez que ce n'est pas le cas max_nprocs
, qui est un paramètre ajustable du noyau avec une fonction légèrement différente.process_id_min
et process_id_max
prescrivent la plage d'ID de processus autorisés.Sous FreeBSD, la valeur de PID est comprise entre 0 et 99999 selon intro(2)
(lien) . Voici une citation du manuel:
ID de processus.
Chaque processus actif du système est identifié de manière unique par un entier non négatif appelé ID de processus. La plage de cet ID est comprise entre 0 et 99999.
Si vous voulez lire le code source vous-même, alors PID_MAX
est défini dans sys/sys/proc.h
(lien) .