DAEMON(3) Podręcznik programisty Linuksa DAEMON(3)

daemon - uruchamianie w tle

#include <unistd.h>
int daemon(int nochdir, int noclose);
Wymagane ustawienia makr biblioteki glibc (patrz 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)

Funkcja daemon() jest przeznaczona dla programów, które chcą odłączyć się od sterującego nimi terminala i działać w tle jako demony systemowe.

Jeśli argument nochdir będzie zerem, to daemon() zmieni bieżący katalog roboczy na katalog główny ("/"). W przeciwnym wypadku bieżący katalog roboczy nie jest zmieniany.

If noclose is zero, daemon() redirects standard input, standard output, and standard error to /dev/null; otherwise, no changes are made to these file descriptors.

(Ta funkcja rozwidla się i jeśli fork(2) się powiedzie, rodzic wykonuje _exit(2), tak, że dalsze błędy są widziane tylko przez potomka). W przypadku pomyślnego zakończenia, zwracane jest zero Jeśli wystąpi błąd, daemon() zwróci -1 i ustawi errno na jeden z błędów określonych dla fork(2) i setsid(2).

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
Interfejs Atrybut Wartość
daemon() Bezpieczeństwo wątkowe MT-Safe

Funkcja nie występuje w POSIX.1. Podobna funkcja pojawia się w systemach BSD. Funkcja daemon() po raz pierwszy pojawiła się w 4.4BSD.

Implementacja w glibc może również zwrócić -1 gdy /dev/null istnieje, ale nie jest urządzeniem znakowym o oczekiwanych numerach głównym i pobocznym. W tym przypadku nie ma potrzeby ustawiania errno.

Implementacja biblioteki C GNU dla tej funkcji została zapożyczona z BSD i nie korzysta z techniki podwójnego rozwidlania (tzn. fork(2), setsid(2), fork(2)) koniecznej dla zapewnienia, że wynikowy proces demona nie jest liderem sesji. Zamiast tego, wynikowy demon jest liderem sesji. W systemach korzystających z semantyki Systemu V (np. Linux), oznacza to, że gdy demon otwiera terminal który nie jest jeszcze kontrolującym terminalem dla innej sesji, to ten terminal po cichu zostanie kontrolującym terminalem dla demona.

fork(2), setsid(2), daemon(7), logrotate(8)

Angielska wersja tej strony pochodzi z wydania 5.11 projektu Linux man-pages. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres manpages-pl-list@lists.sourceforge.net.

22 marca 2021 r. GNU