daemon - im Hintergrund ausführen
Standard-C-Bibliothek (
libc,
-lc)
#include <unistd.h>
int daemon(int nochdir, int noclose);
daemon():
Seit Glibc 2.21:
_DEFAULT_SOURCE
In Glibc 2.19 und 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Bis einschließlich Glibc 2.19:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Die Funktion
daemon() gibt einem Programm die Möglichkeit, sich
selbst vom steuernden Terminal in den Hintergrund zu setzen und dort weiter
als System-Daemon zu laufen.
Wenn
nochdir gleich Null ist, macht
daemon() das Wurzelverzeichnis
(»/«, root directory) zum Arbeitsverzeichnis des Prozesses;
anderenfalls bleibt das Arbeitsverzeichnis unverändert.
Wenn
noclose gleich Null ist, leitet
daemon() die Standardausgabe,
die Standardeingabe und die Fehlerausgabe nach
/dev/null um;
anderenfalls werden keine Änderungen an den Dateideskriptoren
vorgenommen.
(Diese Funktion ruft
fork(2) auf. Wenn der Aufruf erfolgreich ist, ruft
der Elternprozess
_exit(2) auf, so dass nur der Kindprozess über
weitere Fehler informiert wird.) Bei Erfolg gibt
daemon() Null
zurück. Wenn ein Fehler auftritt, gibt
daemon() -1 zurück
und setzt
errno auf einen für
fork(2) und
setsid(2) beschriebenen Wert.
Siehe
attributes(7) für eine Erläuterung der in diesem
Abschnitt verwandten Ausdrücke.
Schnittstelle |
Attribut |
Wert |
daemon() |
Multithread-Fähigkeit |
MT-Safe |
Nicht in POSIX.1. Eine ähnliche Funktion kommt in den BSDs vor. Die
daemon()-Funktion erschien erstmals in 4.4BSD.
Die Glibc-Implementierung kann auch -1 zurückgeben, wenn
/dev/null
existiert, aber kein zeichenorientiertes Gerät ist und die Haupt- und
Nebennummern (major/minor numbers) abweichen.
Die GNU-C-Bibliotheksimplementierung dieser Funktion entstammt BSD und verwendet
nicht die Zweifach-Fork-Technik (d.h.
fork(2),
setsid(2),
fork(2)), die notwendig ist, um sicherzustellen, dass der entstandene
Daemon kein Sitzungsleiter ist. Der entstandene Daemon
ist ein
Sitzungsleiter. Auf Systemen, die der System-V-Semantik gehorchen (z.B. Linux)
bedeutet diese, dass ein Terminal unabsichtlich das steuernde Terminal
für den Daemon wird, falls der Daemon dieses Terminal öffnet,
welches nicht bereits ein steuerndes Terminal für eine andere Sitzung
ist.
fork(2),
setsid(2),
daemon(7),
logrotate(8)
Die deutsche Übersetzung dieser Handbuchseite wurde von Dennis Stampfer
<
[email protected]> und Martin Eberhard Schauer
<
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer