Есть множество задач, которые нужно выполнять с помощью запуска корректно настроенной службы. Сделать это иногда очень сложно. 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)
Если значение nochdir равно нулю, то daemon() изменяет текущий рабочий каталог процесса на корневой каталог ("/"); в противном случае текущий рабочий каталог оставляется без изменений. каталог остается неизменным.
Если noclose равно нулю, то daemon() перенаправляет стандартный ввод, стандартный вывод и стандартную ошибку в /dev/null; в противном случае никаких изменений в эти файловые дескрипторы.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
(Эта функция выполняет форк, и если форк(2) успешен, то родитель вызывает _exit(2), так что дальнейшие ошибки видны только дочернему процессу). При успешном daemon() возвращает ноль. При возникновении ошибки daemon() возвращает -1 и устанавливает значение errno в любую из ошибок, указанных для fork(2) и set-sid(2).
АТРИБУТЫ
Объяснение терминов, используемых в данном разделе, приведено в разделе attributes(7).