Вопрос

У меня есть несколько глупый вопрос, если у меня есть ряд процессов, которые создаются ... это не обязательно какое-то наследование, 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 зависит от планировщика ОС, вам все равно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top