daemon - esegue sullo sfondo
Standard C library (
libc,
-lc)
#include <unistd.h>
int daemon(int nochdir, int noclose);
daemon():
A partire de glibc 2.21:
_DEFAULT_SOURCE
In glibc 2.19 e 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Fino a glibc 2.19 incluso:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
La funzione
daemon() è utilizzata dai programmi che vogliono
staccarsi dal terminale di controllo e stare in esecuzione sullo sfondo come
demoni di sistema.
Se
nochdir è zero,
daemon() cambia la directory di lavoro
corrente del processo alla directory radice ("/"); altrimenti, la
directory di lavoro corrente rimane invariata.
Se
noclose è zero,
daemon() redireziona lo standard input,
lo standard output e lo standard error a
/dev/null; altrimenti, non
vengono apportata variazioni a questi descrittori di file.
(Questa funzione esegue un fork, e se il
fork(2) ha successo, il genitore
chiama
_exit(2), in modo che errori successivi vengano visti solo dal
figlio.) In caso di successo
daemon) restituisce zero. Se si verifica
un errore,
daemon() restituisce -1 e imposta
errno ad uno
qualunque degli errori specificati per
fork(2) e
setsid(2).
Per la spiegazione dei termini usati in questa sezione, vedere
attributes(7).
Interfaccia |
Attributo |
Valore |
daemon() |
Thread safety |
MT-Safe |
Non presente in POSIX.1. Una funzione simile è presente sui sistemi BSD.
La funzione
daemon() apparve per la prima volta in 4.4BSD.
L'implementazione di glibc può anche restituire -1 quando
/dev/null esiste ma non è un dispositivo a caratteri con i
numeri maggiore e minore che ci si aspetterebbe. In questo caso
errno
non ha bisogno di essere impostato.
L'implementazione GNU C Library di questa funzione è stata presa da BSD,
e non impiega la tecnica del doppio fork (cioè,
fork(2),
setsid(2),
fork(2)) che è necessaria per essere sicuri
che il processo demone risultante non sia un leader di sessione. Invece, il
demone risultante
è un leader di sessione. Sui sistemi che
seguono la semantica di System V (p.es. Linux), questo vuol dire che se il
demone apre un terminale che non è già un terminale di controllo
per un'altra sessione, il terminale diventa involontariamente il terminale di
controllo per il demone.
fork(2),
setsid(2),
daemon(7),
logrotate(8)
La traduzione italiana di questa pagina di manuale è stata creata da
Giordano Neri <
[email protected]> e Marco Curreli
<
[email protected]>
Questa traduzione è documentazione libera; leggere la
GNU
General Public License Versione 3 o successiva per le condizioni di
copyright. Non ci assumiamo alcuna responsabilità.
Per segnalare errori nella traduzione di questa pagina di manuale inviare un
messaggio a
[email protected]