Demone (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m r2.7.1) (Bot: Aggiungo: he:Daemon |
No2 (discussione | contributi) m →Aspetti tecnici: Fix link |
||
Riga 9:
==Aspetti tecnici==
In senso strettamente tecnico, i sistemi [[Unix]] considerano come demone qualsiasi [[Processo (informatica)|processo]] che abbia [[init]] come [[processo padre]] e che non abbia più alcun ''terminale controllante'' (i.e. un [[Terminale (informatica)|terminale]] che gli possa inviare direttamente dei [[Segnale (informatica)|segnali]]). Poiché init adotta i [[processo orfano|processi orfani]], il metodo comunemente usato dai programmi per rendersi demoni è quello di invocare la [[chiamata di sistema]] [[fork (programmazione)|fork]] per creare un [[processo figlio]] che sia un loro duplicato e poi terminare, mentre il figlio, rimasto orfano (e quindi adottato da init), continua normalmente l'esecuzione chiudendo i [[canali standard]], invocando la chiamata di sistema [[setsid]] per disconnettersi da ogni terminale controllante e cambiando la [[directory corrente]] a <tt>/</tt> in modo da non tenere inutilmente occupati dei ''[[file system]]'' (cosa che impedirebbe di [[umount|smontarli]]). Questo [[idioma (programmazione)|idioma di programmazione]] è talvolta descritto con l'espressione inglese « ''fork off and die'' ».
Nei sistemi Unix è possibile rendere un qualsiasi programma non interattivo pressoché identico ad un demone [[Esecuzione in background|eseguendolo in background]] tramite il comando [[nohup]] ed effettuando la [[redirezione]] dello ''[[standard input]]'', ''[[standard output]]'' e ''[[standard error]]'' a [[/dev/null]]). Ad esempio:
|