Merci, ça a l'air de répondre à mon besoin. Pour précision, il faut lire "setsockopt" et non "setsocketopt". J'ai eu du mal à trouver le "man setsocketopt" ;-)
En fait, execlp n'écrase pas l'environnement. Par fork, le fils hérite de l'environnement du père (dont les fichiers ouverts comme les sockets) et il reste présent avec execlp. Donc le socket restait ouvert. Par mesure de sécurité, avant l'execlp, je ferme tout les fichiers susceptibles d'être ouverts (sauf les standards) :
int fid;
for( fid = getdtablesize(); fid > 2; fid-- ) close(fid);
1. Pour ce qui est du sleep. J'avais déjà testé avec un sleep de 10 s avec le même résultat.
2. La gestion du programme de surveillance est embêtante dans le sens où lorsque j'arrête le programme volontairement, il faut penser à arrêter la surveillance.
3. J'évite l'inittab car je trouve la gestion par chkconfig bien plus souple.
[^] # Re: redemarrer en cas de plantage
Posté par mitteljc . En réponse au message Redémarrer un serveur en cas de plantage. Évalué à 1.
Salut.
# OK, trouvé
Posté par mitteljc . En réponse au message Redémarrer un serveur en cas de plantage. Évalué à 2.
int fid;
for( fid = getdtablesize(); fid > 2; fid-- ) close(fid);
[^] # Re: Ca va trop vite?
Posté par mitteljc . En réponse au message Redémarrer un serveur en cas de plantage. Évalué à 1.
2. La gestion du programme de surveillance est embêtante dans le sens où lorsque j'arrête le programme volontairement, il faut penser à arrêter la surveillance.
3. J'évite l'inittab car je trouve la gestion par chkconfig bien plus souple.
Merci.