--- rpl/src/instructions_d5.c 2023/08/07 17:42:54 1.176 +++ rpl/src/instructions_d5.c 2023/08/08 13:33:09 1.177 @@ -1823,6 +1823,10 @@ instruction_detach(struct_processus *s_e { l_element_suivant = (*l_element_courant).suivant; + // On ne détruit pas le descripteur sous prétexte + // d'avoir le fichier ou la socket fermée dans le processus père + + /* fclose((*((struct_descripteur_fichier *) (*l_element_courant).donnee)).descripteur_c); @@ -1832,6 +1836,7 @@ instruction_detach(struct_processus *s_e sqlite3_close((*((struct_descripteur_fichier *) (*l_element_courant).donnee)).descripteur_sqlite); } + */ free((*((struct_descripteur_fichier *) (*l_element_courant) .donnee)).nom); @@ -2444,21 +2449,21 @@ instruction_detach(struct_processus *s_e { l_element_suivant = (*l_element_courant).suivant; - if ((*((struct_socket *) (*(*l_element_courant).donnee) - .objet)).socket_connectee == d_vrai) - { - shutdown((*((struct_socket *) (*(*l_element_courant).donnee) - .objet)).socket, SHUT_RDWR); - } - - close((*((struct_socket *) (*(*l_element_courant).donnee) - .objet)).socket); - if (((*((struct_socket *) (*(*l_element_courant).donnee).objet)) .pid == getpid()) && (pthread_equal((*((struct_socket *) (*(*l_element_courant).donnee).objet)).tid, pthread_self()) != 0)) { + if ((*((struct_socket *) (*(*l_element_courant).donnee) + .objet)).socket_connectee == d_vrai) + { + shutdown((*((struct_socket *) (*(*l_element_courant).donnee) + .objet)).socket, SHUT_RDWR); + } + + close((*((struct_socket *) (*(*l_element_courant).donnee) + .objet)).socket); + if ((*((struct_socket *) (*(*l_element_courant).donnee).objet)) .effacement == 'Y') {