Функция
daemon()
необходима для того, чтобы отключить программу от управляющего терминала
и запустить ее как системный демон.
Если аргумент
nochdir
не нулевой, то
daemon()
изменяет текущий рабочий каталог на корневой (/).
Если аргумент
noclose
не нулевой, то
daemon()
перенаправляет стандартный поток ввода/вывода ошибок в /dev/null.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Эта функция порождает новый процесс и, если
fork()
завершается успешно, то родительский процесс вызывает
_exit(0),
чтобы дальнейшие ошибки воспринимались только дочерним процессом.)
В случае успешного выполнения возвращается ноль.
Если возникла ошибка, то
daemon()
возвращает -1 и присваивает глобальной переменной
errno
значение, указанное в библиотечных функциях
fork(2)
и
setsid(2).
Реализация в glibc может также возвращать -1 в случаях, когда
/dev/null
существует, но не является файлом символьного устройства с ожидаемыми
основным и вспомогательным номерами. В этом случае нет необходимости
устанавливать
errno.