Запустить процесс в фоновом режиме
#include <stdlib.h>int daemon( int nochdir,int noclose );
0
, текущая рабочая директория меняется на корневую (/).0
, стандартные потоки ввода, вывода и ошибок перенаправляются в /dev/null
.libc
Функция daemon() дает программе возможность открепиться от управляющего терминала и запуститься в фоне в качестве системного демона.
Данная функция вызывает fork() и setsid().
Управляющий терминал ведет себя так же, как и в 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(). |
Legacy Unix
В настоящее время daemon() поддерживается только однопоточными приложениями. При попытке создать поток и затем вызвать daemon() функция возвратит -1
и установит errno в ENOSYS
.
fork(), procmgr_daemon(), setsid()
Предыдущий раздел: Описание API системной библиотеки