version 1.39, 2011/08/30 14:19:28
|
version 1.40, 2011/09/14 17:56:00
|
Line 405 localisation_courante(struct_processus *
|
Line 405 localisation_courante(struct_processus *
|
* Récupération de la valeur de retour du processus détaché |
* Récupération de la valeur de retour du processus détaché |
*/ |
*/ |
|
|
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) |
if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) |
|
# else |
|
if (sem_post((*s_etat_processus).semaphore_fork) != 0) |
|
# endif |
|
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 417 localisation_courante(struct_processus *
|
Line 413 localisation_courante(struct_processus *
|
|
|
if (waitpid(pid, &status, 0) == -1) |
if (waitpid(pid, &status, 0) == -1) |
{ |
{ |
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) |
if (sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
|
# else |
|
if (sem_wait((*s_etat_processus).semaphore_fork) == -1) |
|
# endif |
|
{ |
{ |
if (errno != EINTR) |
(*s_etat_processus).erreur_systeme = d_es_processus; |
{ |
return; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
|
return; |
|
} |
|
} |
} |
|
|
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
} |
} |
|
|
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) |
if (sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
|
# else |
|
if (sem_wait((*s_etat_processus).semaphore_fork) == -1) |
|
# endif |
|
{ |
{ |
if (errno != EINTR) |
(*s_etat_processus).erreur_systeme = d_es_processus; |
{ |
return; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
|
return; |
|
} |
|
} |
} |
} while((!WIFEXITED(status)) && (!WIFSIGNALED(status))); |
} while((!WIFEXITED(status)) && (!WIFSIGNALED(status))); |
|
|
Line 461 localisation_courante(struct_processus *
|
Line 443 localisation_courante(struct_processus *
|
|
|
tampon[0] = d_code_fin_chaine; |
tampon[0] = d_code_fin_chaine; |
|
|
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) |
if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) |
|
# else |
|
if (sem_post((*s_etat_processus).semaphore_fork) != 0) |
|
# endif |
|
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 475 localisation_courante(struct_processus *
|
Line 453 localisation_courante(struct_processus *
|
pipes_sortie[0], &(tampon[pointeur]), |
pipes_sortie[0], &(tampon[pointeur]), |
longueur_lecture)) > 0) |
longueur_lecture)) > 0) |
{ |
{ |
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
|
# else |
|
while(sem_wait((*s_etat_processus).semaphore_fork) == -1) |
|
# endif |
|
{ |
{ |
if (errno != EINTR) |
(*s_etat_processus).erreur_systeme = d_es_processus; |
{ |
return; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
|
return; |
|
} |
|
} |
} |
|
|
tampon[pointeur + ios] = d_code_fin_chaine; |
tampon[pointeur + ios] = d_code_fin_chaine; |
Line 501 localisation_courante(struct_processus *
|
Line 472 localisation_courante(struct_processus *
|
return; |
return; |
} |
} |
|
|
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) |
if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) |
|
# else |
|
if (sem_post((*s_etat_processus).semaphore_fork) != 0) |
|
# endif |
|
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
} |
} |
} |
} |
|
|
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
|
# else |
|
while(sem_wait((*s_etat_processus).semaphore_fork) == -1) |
|
# endif |
|
{ |
{ |
if (errno != EINTR) |
(*s_etat_processus).erreur_systeme = d_es_processus; |
{ |
return; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
|
return; |
|
} |
|
} |
} |
|
|
if (strlen(tampon) == 0) |
if (strlen(tampon) == 0) |
Line 582 localisation_courante(struct_processus *
|
Line 542 localisation_courante(struct_processus *
|
|
|
free(arguments); |
free(arguments); |
|
|
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) |
if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) |
|
# else |
|
if (sem_post((*s_etat_processus).semaphore_fork) != 0) |
|
# endif |
|
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
Line 608 localisation_courante(struct_processus *
|
Line 564 localisation_courante(struct_processus *
|
strcpy((*s_etat_processus).localisation, d_locale); |
strcpy((*s_etat_processus).localisation, d_locale); |
} |
} |
|
|
# ifndef SEMAPHORES_NOMMES |
if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
|
# else |
|
while(sem_wait((*s_etat_processus).semaphore_fork) == -1) |
|
# endif |
|
{ |
{ |
if (errno != EINTR) |
(*s_etat_processus).erreur_systeme = d_es_processus; |
{ |
return; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
|
return; |
|
} |
|
} |
} |
|
|
if (close(pipes_erreur[0]) != 0) |
if (close(pipes_erreur[0]) != 0) |