(Courriels de diversion: <arrangions@diarrhees-enfantements.com> <caracteres@immiscerez-rechaufferas.com> <fourrerons@immeuble-controleras.com> <remplacons@deshabituee-derivez.com> <feodale@combattes-identifia.com> <lingerie@ambulantes-enumereraient.com> <embraie@balafrer-reprimerais.com> <saigneriez@implosera-attarde.com> <meuglement@apothicaire-exterminerait.com> <diluera@scarabees-autogeres.com> )


Le 10.04.03, jdd a tapoté :

| Thomas Nemeth wrote:
|
| > 	Installer un gestionnaire de signal permet de contourner celui
| > 	par défaut du système. En l'occurence celui par défaut fait se
| > 	terminer l'application. En le remplaçant par une fonction ne
| > 	faisant rien, cela permet au programme de continuer même s'il
| > 	reçoit ce signal.
|
| dans les exemples que j'ai essayé, ca ne marche pas... en tout cas pas
| dans le contexte avoqué en général (fonctionnement en arrière plan). le
| SOGHUP est peut-être intercepté, mais ca ne suffit pas à maintenir le
| processus en vie.

	Je n'ai jamais tenté d'intercepter SIGHUP, mais tu pourras trouver
	un exemple de récupération de signaux dans le serveur de guinness
	http://tnemeth.free.fr/projets/guinness-server.html dans
	guinnessd.c :

void install_handler ();


/*
 * Gestionnaire de signal SIGPIPE, SIGTERM, SIGQUIT et SIGINT
 *
 */
void handler_signaux (int sig) {
    switch (sig) {
        case SIGPIPE:
            printlog (LOG_NOTIFY, "Signal SIGPIPE reçu...\n");
            install_handler ();
            break;
        case SIGTERM:
        case SIGQUIT:
        case SIGINT:
            online = FALSE;
            printlog (LOG_NOTIFY, "Signal de terminaison reçu...\n");
            break;
        default:
            printlog (LOG_NOTIFY, "Signal reçu...\n");
    }
}

[...]

/*
 * Installation du gestionnaire de signal SIGPIPE et autres...
 *
 */
void install_handler () {
    signal (SIGPIPE, handler_signaux);
    signal (SIGTERM, handler_signaux);
    signal (SIGQUIT, handler_signaux);
    signal (SIGINT,  handler_signaux);
}



| sighup devrait permettre de demander à un démon de recharger sa config
| ou ses logs

	Ça, il te suffit de lancer la relecture du fichier de config lors
	de la réception de ce signal en le gérant comme les autres...
	Normalement :)


| wget: avec nohup, pas de sortie à l'écran

	Pour moi c'est tout à fait normal : c'est nohup lui-même qui
	redirige la sortie. Ici, nohup est intégré au shell _et_ un
	script, mais c'est celui du shell qui est utilisé en premier :


exether[guinness-server] which nohup
nohup: commande intégrée au shell.
exether[guinness-server] where nohup
nohup est intégré(e) au shell
/usr/bin/nohup
exether[guinness-server] file /usr/bin/nohup
/usr/bin/nohup: Bourne shell script text
exether[guinness-server] echo $SHELL
/usr/bin/tcsh



Thomas
-- 
BOFH excuse #58:
High pressure system failure

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>