Каковы поведенческие различия между демоном и нормальным процессом? - PullRequest
16 голосов
/ 01 сентября 2010

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

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

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

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

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

Ответы [ 3 ]

27 голосов
/ 01 сентября 2010

Не совсем. Демон - это просто термин для процесса, который работает непрерывно и обычно не привязан к терминалу.

Демоны не являются отдельным классом процессов и не имеют специальных привилегий или атрибутов.

Существует функция BSD / Linux C, которая называется daemon ( man page ), но это просто очень простой способ отсоединить ваш процесс от его терминала. Он так назван, потому что так обычно делают демоны, а не наоборот.

8 голосов
/ 24 июля 2014

Разница между Process и Daemon в том, что родительский элемент Daemon является init - первый процесс начался во время * загрузки Nix. И именно поэтому Daemon не подключен к терминалу. Поэтому, когда вы закрываете свой терминал, он не будет убит ОС. Но вы все равно можете отправлять сигналы своему Демону .

1 голос
/ 01 сентября 2010

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

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

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

...