Каково максимальное значение идентификатора процесса?
Кроме того, возможно ли изменить идентификатор процесса?
Каково максимальное значение идентификатора процесса?
Кроме того, возможно ли изменить идентификатор процесса?
Ответы:
В Linux вы можете найти максимальное значение PID для вашей системы с помощью этого:
$ cat /proc/sys/kernel/pid_max
Это значение также может быть записано с использованием того же файла, однако значение может быть расширено только до теоретического максимума 32768 для 32-битных систем или 4194304 для 64-битных:
$ echo 32768 > /proc/sys/kernel/pid_max
В большинстве 64-битных систем представляется нормальным устанавливать это значение на то же значение, которое установлено в 32-битных системах, но это скорее соглашение, а не требование.
От 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).
И нет, вы не можете изменить PID запущенного процесса. Он присваивается ядром в качестве последовательного номера во время запуска процесса, и это его идентификатор с того времени. Единственное, что вы можете сделать, чтобы получить новый, - это заставить ваш код раскошелиться на новый процесс и завершить старый.
Другие ответы объяснили
/proc/sys/kernel/pid_max
для Linux иНо вопрос не указывал операционную систему. Итак, вот некоторые другие:
pidmax
в /etc/system
- то по умолчанию 30000 и которые могут быть установлены в любом месте между 266 и 999999. Обратите внимание, что это не так max_nprocs
, это настраиваемый параметр ядра с немного другой функцией.process_id_min
и задают process_id_max
диапазон допустимых идентификаторов процессов.В FreeBSD значение PID составляет от 0 до 99999 согласно intro(2)
(ссылка) . Вот цитата из руководства:
Идентификатор процесса.
Каждый активный процесс в системе уникально идентифицируется неотрицательным целым числом, называемым идентификатором процесса. Диапазон этого идентификатора составляет от 0 до 99999.
Если вы хотите прочитать исходный код самостоятельно, PID_MAX
это определено в sys/sys/proc.h
(ссылка) .