• # OK, trouvé

    Posté par . En réponse au message Redémarrer un serveur en cas de plantage. Évalué à 2.

    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);