Страница 1 из 1

daemon - превращает обычные программы в службы

Добавлено: 01 окт 2023, 21:09
ya
daemon - превращает обычные программы в службы

Есть множество задач, которые нужно выполнять с помощью запуска корректно настроенной службы. Сделать это иногда очень сложно. Daemon выполняет эту задачу для других процессов. Он полезен для создания служб из программ не написанных на языках типа С, С++ или Perl (например, /bin/sh, Java).

Пример использования:

Код: Выделить всё

 #include <unistd.h>

       int daemon(int nochdir, int noclose);

  // Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       daemon():
           Since glibc 2.21:
               _DEFAULT_SOURCE
           In glibc 2.19 and 2.20:
               _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
           Up to and including glibc 2.19:
               _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Функция daemon() предназначена для программ, желающих отсоединиться от управляющего терминала и работать в фоновом режиме в качестве системного демонов.

Если значение nochdir равно нулю, то daemon() изменяет текущий рабочий каталог процесса на корневой каталог ("/"); в противном случае текущий рабочий каталог оставляется без изменений. каталог остается неизменным.

Если noclose равно нулю, то daemon() перенаправляет стандартный ввод, стандартный вывод и стандартную ошибку в /dev/null; в противном случае никаких изменений в эти файловые дескрипторы.


ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
(Эта функция выполняет форк, и если форк(2) успешен, то родитель вызывает _exit(2), так что дальнейшие ошибки видны только дочернему процессу). При успешном daemon() возвращает ноль. При возникновении ошибки daemon() возвращает -1 и устанавливает значение errno в любую из ошибок, указанных для fork(2) и set-sid(2).

АТРИБУТЫ
Объяснение терминов, используемых в данном разделе, приведено в разделе attributes(7).