Вопрос
У меня есть несколько глупый вопрос, если у меня есть ряд процессов, которые создаются ... это не обязательно какое-то наследование, pid процессов должен быть числами непрерывными или случайными pids?
Решение
Это определяется операционной системой.
Как правило, они обычно назначаются ОС. Однако такое поведение не является основанием для принятия решений, поскольку в большинстве спецификаций операционной системы указывается, что распределение идентификаторов процесса не является детерминированным (т. Е. Оно может быть случайным и может измениться в будущей версии и т. Д.).
Другие советы
В Linux pids обычно распределяются последовательно в масштабе всей системы, но они периодически обновляются, и могут быть «пробелы», вызванные другими не связанными процессами. В крайнем случае, у вас может быть достаточно широкий «зазор», чтобы вызвать этот переход. Поэтому не принимайте никакого определенного порядка - вместо этого явно отслеживайте PID вашего родительского или дочернего процесса.
Вот как можно проверить, что делает ваша система:
for i in $(seq 20); do ps; done | grep ps
Идентификаторы P " ps " Команды являются последовательными процессами или настолько близки к последовательным, насколько разумно может ожидать любой другой вызывающий объект.
Мой терминал cygwin в Windows распределяет их случайным образом, мой веб-хост размещает их последовательно (со случайными промежутками, которые, предположительно, относятся к процессам, выполняемым другими пользователями или серверами).
Некоторые считают, что последовательное выделение PID представляет собой небольшую возможную проблему безопасности, так как это может привести к утечке информации между пользователями многопользовательской системы.
В AIX вы часто будете видеть большие (например, 7-значные) идентификаторы PID, и они не обязательно распределяются полупоследовательно (хотя мне показалось, что при циклическом тестировании я выполнял цикл с шагом 2; на машине был другой пользователь, так что это может мало что значить).
Новый вход в систему на компьютере с AIX 5.3:
$ ps
PID TTY TIME CMD
1060910 pts/27 0:00 -ksh
1155224 pts/27 0:00 ps
$
Зависит от вашей платформы, но вы не должны зависеть от какого-либо конкретного порядка ваших pid.
В Windows pid обычно распределяются в возрастающем количестве, но по мере выхода процессов pid можно повторно использовать, и вы увидите случаи, когда более новый процесс имеет более низкий pid, чем более старый процесс. Кроме того, pid выходит из того же пространства имен, что и tid, поэтому вы не увидите увеличения pid на 4 при запуске новых процессов.
С вашей точки зрения они будут случайными. Система управляет этими номерами и присваивает их при создании процессов. Быстрый просмотр идентификаторов PID, установленных в моей системе, показывает, что все они делятся на 4 ...
Если вы создаете тех потомков, вы знаете pid, pid зависит от планировщика ОС, вам все равно.