Предположим, что pid X
является лидером группы процессов, а X
завершается, но другие процессы в группе процессов продолжают работать (с X
в качестве их pgid). Предотвратит ли Linux присвоение значения X
в качестве pid новому процессу?
Я спрашиваю об этом из-за условия отказа, которое POSIX допускает для setsid
:
[EPERM] Вызывающий процесс уже является лидером группы процессов, или идентификатор группы процессов процесса, отличного от вызывающего, совпадает с идентификатором вызывающего процесса.
Эта ошибка кажется неисправимым условием для кода, использующего группы процессов (то есть оболочки), которые будут запускаться «случайно», что делает ее еще более одиозной. Я бы предположил, что любая реализация, направленная на разумный уровень качества, будет избегать переназначения X
в качестве pid, пока он все еще используется в качестве pgid, но я нигде не могу найти это задокументировано.