Каковы поведенческие различия между демоном и нормальным процессом?

Я знаю, что демоны работают в основном в фоновом режиме, т. Е. Они требуют очень меньшего взаимодействия с пользователем.

Википедия списки некоторые из Типы демонов, которые обычно существуют:

  • Отстранение от контролирующего tty
  • Становление лидером сеанса
  • Становление лидером группы процессов
  • Пребывание в фоновом режиме путем разветвления и выхода (один или два раза). Иногда требуется, чтобы процесс стал лидером сеанса. Это также позволяет родительскому процессу продолжить его нормальное выполнение. Эта идиома иногда сводится к фразе «fork off and die»
  • Установка корневого каталога («/») в качестве текущего рабочего каталога, чтобы в процессе не использовался какой-либо каталог, который может находиться в смонтированной файловой системе. (позволяя отключить его).
  • Изменение значения umask на 0, чтобы разрешить open (), creat () и др. вызовы, чтобы предоставить свои собственные маски разрешений и не зависеть от umask вызывающей стороны
  • Закрытие всех унаследованных открытых файлов во время выполнения, которые остаются открытыми родительским процессом, включая файловые дескрипторы 0, 1 и 2 (stdin, stdout, stderr). Необходимые файлы будут открыты позже.
  • Использование файла журнала, консоли или / dev / null в качестве stdin, stdout, и stderr

Я хочу знать, могут ли быть какие-либо различия в поведении демона, отличного от нормального процесса, за исключением того, который я упомянул в первой строке. Оба типа процессов выполняют свою работу и взаимодействуют с пользователем в зависимости от степени взаимодействия, которое им необходимо для выполнения своей работы.

Есть ли что-то еще для демонов?

16
задан Lazer 1 September 2010 в 06:18
поделиться

1 ответ

Вопрос немного расплывчатый, но я все же попробую:

Технически демоны - это такие же процессы, как и любые другие. Обычно, но не обязательно, они имеют закрытые файловые дескрипторы и другое поведение, подходящее для процессов, которые живут долго. На высоком уровне посмотрите, как настроено большинство процессов демона (в Python), проверьте: http://www.noah.org/wiki/Daemonize_Python

Таким образом, различия действительно сводятся к жизненному циклу и пользователям. Процессы-демоны живут в течение длительного периода времени, обычно до тех пор, пока заданный уровень выполнения. Они также обычно предоставляют услуги другим общесистемным процессам или процессам выше среднего процесса, запускаемого пользователем..

1
ответ дан 30 November 2019 в 16:49
поделиться