daemon - uruchamianie w tle
Standardowa biblioteka C (
libc,
-lc)
#include <unistd.h>
int daemon(int nochdir, int noclose);
daemon():
Od glibc 2.21:
_DEFAULT_SOURCE
W glibc 2.19 i 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Do glibc 2.19 włącznie:
_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.
Jeśli argument
noclose będzie zerem, to
daemon()
przekieruje standardowe wejście, standardowe wyjście i
standardową diagnostykę do
/dev/null. W przeciwnym
wypadku podane deskryptory plików nie są zmieniane.
(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)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Andrzej Krzysztofowicz <
[email protected]>, Robert
Luberda <
[email protected]> i Michał Kułach
<
[email protected]>
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 listy dyskusyjnej
[email protected]