почему новый pid меньше старых?

Есть ли вероятность того, что pid нового процесса меньше, чем существующие? У меня есть процесс демона, который перезапустится, когда будет убит, я записал pids и обнаружил, что pid сначала уменьшился, а затем пошел больше.

Какова возможная причина?

  • Привод mount iscsi при загрузке - остановка системы
  • X11 управляет корневым окном или устанавливает окно как фоновое окно (обои)
  • Установка альтернативных устройств (с различными вариантами крепления) в одной точке подключения
  • Неверная корневая оболочка в файле / etc / passwd
  • Использование образа диска DD на Red Hat
  • Мониторинг всплеска событий с inotifywait
  • ================================================== =============

    извините за просьбу и спасибо за ответы.

    Кажется, я нашел ответ. / proc / sys / kernel / pid_max показывает 32768 (android os на телефоне), в длительном тесте он должен был превысить это и перераспределить. Еще раз спасибо.

  • Почему сегменты данных и кода полностью перекрываются в Linux?
  • sed + удалить строки, содержащие строку, кроме строк с
  • Как установить backtrack 5 на USB, который не монтируется с существующей ОС
  • Как я могу узнать, какая программа обнюхивает пакеты?
  • Как заменить несколько букв в многострочном слове, состоящем из цифр и букв в определенном формате?
  • Как отслеживать изменения ресурсов (inodes, blocks) при запуске программы
  • 4 Solutions collect form web for “почему новый pid меньше старых?”

    В Linux PID присваиваются по порядку, но в конечном итоге система ударит его ПИД-предел и начнет заново, пропустив уже назначенные PID.

    Я думал, что PID присваиваются случайным образом, чтобы не допустить, чтобы злоумышленники угадали временные имена файлов, которые обычно имеют строковое представление процесса PID в них. Но я был неправ. Я написал следующую небольшую программу C и запустил ее на RHEL 5, x86_64, чтобы проверить:

    #include <stdio.h> #include <string.h> #include <errno.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(int ac, char **av) { int cnt; pid_t firstpid = getpid(); long diff = 32768 - firstpid; cnt = diff; printf("Going to fork %d times\n", cnt); while (cnt) { pid_t mypid = getpid(); printf("cnt %d, pid %d\n", cnt, mypid); switch (fork()) { case 0: break; case -1: fprintf(stderr, "fork() problem: %s\n", strerror(errno)); _exit(9); break; default: _exit(0); break; } --cnt; } return 0; } 

    Самый большой цифровой PID, который я мог получить, был 32767, 2 ^ 15-1, что может поместиться в подписанный 2-байтовый короткий. Я буду дядей обезьяны.

    Это устраняет предсказуемость, которая является проблемой безопасности.

    Это нормально. Когда начинается новый процесс, у него есть новый идентификатор процесса, но он не должен быть больше.

    Linux и Unix - лучшая ОС в мире.