Я читал о режиме демона процесса на https://en.wikipedia.org/wiki/Daemon_%28computing%29#CreationИзменяется родительский процесс, необходимый при демонтизации процесса?
В строго техническом смысле, системный процесс Unix-подобных является демоном , когда родительский процесс завершается и демон присваивается INIT процесса (номер процесса 1) в качестве его родительского процесса и не имеет контрольного терминала . Однако, чаще всего, демоном может быть любой фоновый процесс , будь то дочерний процесс init или нет.
На Unix-подобной системе, общий метод для процесса, чтобы стать демон, когда процесс запускается из командной строки или из сценария в запуска, такие как сценарий инициализации или сценарий SystemStarter, включает :
- диссоциирующем от управляющего терминала
- Стать лидером сеанса
- стать лидером группового процесса
- Исполнительные как фоновая задача по forki ng и выход (один или два раза). Иногда требуется, чтобы процесс стал сессией . Он также позволяет родительскому процессу продолжить нормальное выполнение .
- Установка корневого каталога (/) в качестве текущего рабочего каталога, чтобы процесс не поддерживал использование какого-либо используемого каталога, который может находиться на смонтированной файловой системе (позволяющей ее размонтировать).
- Изменение бит полномочий в 0, чтобы позволить открытой(), Creat(), а другая операционной система требует, чтобы обеспечить свои собственные маски разрешения и не зависеть от UMASK вызывающего
- Заключительного все унаследованных файлы в то время выполнения, которые остаются открытыми родительским процессом, включая файловые дескрипторы 0, 1 и 2 для стандартных потоков (stdin, stdout и stderr). Обязательные файлы будут открыты позже.
- Используя лог, консоль, или/Dev/нуля в качестве стандартного ввода, стандартного вывода и стандартного потока ошибок
Если процесс запускается с помощью супер-демона сервера, таких как INETD, запуска программ или Systemd, демон супер-сервера будет выполнять те функции для процесса [5] [6] [7] (за исключением демонов старого стиля, а не , преобразованных для запуска под systemd и заданных как Type = forking [7] и " threaded "серверы датаграмм в inetd [5]).
Есть шаг там, что изменения родительского процесса процесса быть daemonized? Мне кажется, что ни один из шагов не делает этого?
Изменился родительский процесс, необходимый при демонтизации процесса?
После изменения родительского процесса процесса (процесс не обязательно быть daemonized), процесс может быть связан с контролирующим TTY нового родительского процесса?(Цель этого вопроса заключается в ли «держать процесс диссоциированного из в управляющего терминала нового родительского процесса» является необходимым условием из «изменения родительского процесса процесса».)
См. Мой родственный вопрос https://unix.stackexchange.com/questions/266565/daemonize-a-process-in-shell
Спасибо.
Используйте [демон (3)] (http://man7.org/linux/man-pages/man3/daemon.3.html) –