Яке максимальне значення ідентифікатора процесу?
Також, чи можна змінити ідентифікатор процесу?
Яке максимальне значення ідентифікатора процесу?
Також, чи можна змінити ідентифікатор процесу?
Відповіді:
В 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
(посилання) .