daemon()

Запустить процесс в фоновом режиме

Прототип:

#include <stdlib.h>
int daemon( int nochdir,
int noclose );

Аргументы:

nochdir
Если данный аргумент равен 0, текущая рабочая директория меняется на корневую (/).
noclose
Если данный аргумент равен 0, стандартные потоки ввода, вывода и ошибок перенаправляются в /dev/null.

Библиотека:

libc

Описание:

Функция daemon() дает программе возможность открепиться от управляющего терминала и запуститься в фоне в качестве системного демона.

Данная функция вызывает fork() и setsid().


Note: Управляющий терминал ведет себя так же, как и в Unix System V, Release 4. Функция open() для устройства терминала, еще не связанного с другим сеансом, заставляет устройство стать управляющим терминалом для этого процесса.

Менеджер высокой готовности (HAM, High Availability Manager) может видеть сообщения о завершении только процессов, зарегистрированных через ham_attach_self(), процессов, завершившихся ненормально, или задач, выполняющихся в сеансе 1. Функция daemon() не помещает вызывающий процесс в этот сеанс; если Вы хотите использовать свое приложение с HAM, используйте в процессе функцию ham_attach_self() или procmgr_daemon().

HAM автоматически переключается на мониторинг нового процесса, созданного daemon(), если исходный процесс использовал ham_attach_self().


Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Классификация:

Legacy Unix

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Нет

Предостережения:

В настоящее время daemon() поддерживается только однопоточными приложениями. При попытке создать поток и затем вызвать daemon() функция возвратит -1 и установит errno в ENOSYS.

Тематические ссылки:

fork(), procmgr_daemon(), setsid()




Предыдущий раздел: Описание API системной библиотеки