Відповіді:
Ні, з дуже простої причини, що існує максимальне числове значення, яке може мати PID. Якщо процес має найвищий PID, жоден дочірній він не може мати більший PID. Альтернативою, щоб дати дитині менший PID, було б fork()
взагалі провалити , що було б не дуже продуктивно.
PID-адреси розподіляються в порядку, і після використання найвищого, система завертається для повторного використання (вільних) нижчих, тому ви можете отримати нижчі PID-адреси для дитини і в інших випадках.
Максимальний PID у моїй системі ( /proc/sys/kernel/pid_max
) становить всього 32768, тому не важко досягти умови, коли відбувається обертання.
$ echo $$
27468
$ bash -c 'echo $$'
1296
$ bash -c 'echo $$'
1297
Якщо ваша система повинна була розподіляти PID випадковим чином ( як, здається, OpenBSD ) замість послідовно (як Linux), було б два варіанти. Або випадковий вибір був зроблений у всьому просторі можливих ПІД, і в цьому випадку очевидно, що ПІД дитини може бути нижчим, ніж у батьків. Або PID дитини вибирався б випадковим чином із значень, більших за PID батьків, які в середньому ставлять його на половину між PID батьків та максимальним. Рекурсивно розгортання процесів швидко досягає максимуму, і ми опинимося в тій же самій точці, про яку було сказано вище: для досягнення успіху новій вилці потрібно використовувати нижчий PID.
Також існує потенціал вразливості безпеки, використовуючи сповіщення ядра та змушуючи себе уникати виявлення методом сканування таблиці процесів; це, якщо правильно виконано, призводить до того, що ваш процес має менший PID та інструменти обробки, не бачачи процес, про який йде мова.
http://cve.circl.lu/cve/CVE-2018-1121
procps-ng, propps є вразливим до процесу, що переховується через перегони. Оскільки proc_pid_readdir () ядра повертає записи PID у порядку зростання чисел, процес, що займає високий PID, може використовувати ініціативні події, щоб визначити, коли список процесів сканується, і fork / exec для отримання нижчого PID, таким чином уникаючи перерахування. Непривілейований зловмисник може приховати процес від утиліти propps-ng, використовуючи перегоновий стан під час читання / proc / PID-записів. Ця вразливість впливає на propps і propps-ng до версії 3.3.15, також можуть впливати новіші версії.