Как генерируются PID в Ubuntu? - PullRequest
       17

Как генерируются PID в Ubuntu?

0 голосов
/ 18 февраля 2011

Я только что написал программу, которая разветвляется на один процесс. Дочерний процесс просто отображает «HI» 200 раз. Процесс отца просто говорит, что он отец. Я распечатал оба пакета. Когда я запускаю свою программу несколько раз, я вижу, что родительский pid остается прежним, что является нормальным. Чего я не понимаю, так это того, почему pid ребенка увеличивается на 2, а точнее на 2. Мой вопрос: это стандартный метод генерации pid в Ubuntu? Увеличение на 2?

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

PID монотонно увеличивается в Linux 2.6, но почему это важно, что вы получаете? Не полагайтесь на какое-либо конкретное поведение. Если есть пропуск +2, это может быть просто потому, что другой процесс породил ребенка. Или потому что +1 достиг бы PID, который уже используется.

0 голосов
/ 18 февраля 2011

Найдена ссылка здесь , говорящая, что vfork () потребляет pid как побочный продукт своей работы.Кроме того, в некоторых случаях, если вы разветвляетесь из сценария оболочки, форк может породить новую оболочку до того, как ваш настоящий сценарий будет задействован, что также потребует pid.

Я бы предложил приостановить вашзапрограммируйте пару веток и посмотрите, есть ли другой процесс, занимающий эти «отсутствующие» pids.

...