version 1.104, 2019/02/17 09:09:53
|
version 1.107, 2019/05/16 12:03:01
|
Line 3372 instruction_sto(struct_processus *s_etat
|
Line 3372 instruction_sto(struct_processus *s_etat
|
================================================================================ |
================================================================================ |
*/ |
*/ |
|
|
struct |
static struct |
{ |
{ |
struct_processus *s_etat_processus; |
struct_processus *s_etat_processus; |
struct_liste_chainee *fd_stdin; |
struct_liste_chainee *fd_stdin; |
Line 3849 instruction_syseval(struct_processus *s_
|
Line 3849 instruction_syseval(struct_processus *s_
|
if (close(pipes_entree[1]) != 0) |
if (close(pipes_entree[1]) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
printf("%d\n",__LINE__); |
} |
} |
|
|
if (close(pipes_sortie[0]) != 0) |
if (close(pipes_sortie[0]) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
printf("%d\n",__LINE__); |
} |
} |
|
|
if (close(pipes_erreur[0]) != 0) |
if (close(pipes_erreur[0]) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
printf("%d\n",__LINE__); |
} |
} |
|
|
if (pipes_entree[0] != STDIN_FILENO) |
if (pipes_entree[0] != STDIN_FILENO) |
Line 3869 instruction_syseval(struct_processus *s_
|
Line 3869 instruction_syseval(struct_processus *s_
|
if (dup2(pipes_entree[0], STDIN_FILENO) == -1) |
if (dup2(pipes_entree[0], STDIN_FILENO) == -1) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
printf("%d\n",__LINE__); |
} |
} |
} |
} |
|
|
Line 3878 instruction_syseval(struct_processus *s_
|
Line 3878 instruction_syseval(struct_processus *s_
|
if (dup2(pipes_sortie[1], STDOUT_FILENO) == -1) |
if (dup2(pipes_sortie[1], STDOUT_FILENO) == -1) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
printf("%d\n",__LINE__); |
} |
} |
} |
} |
|
|
Line 3887 instruction_syseval(struct_processus *s_
|
Line 3887 instruction_syseval(struct_processus *s_
|
if (dup2(pipes_sortie[1], STDERR_FILENO) == -1) |
if (dup2(pipes_sortie[1], STDERR_FILENO) == -1) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
printf("%d\n",__LINE__); |
} |
} |
} |
} |
|
|
if (nombre_arguments != 0) |
if ((nombre_arguments != 0) && ((*s_etat_processus).erreur_systeme |
|
== d_es)) |
{ |
{ |
execvp(arguments[0], arguments); |
execvp(arguments[0], arguments); |
} |
} |
else |
|
{ |
|
exit(EXIT_SUCCESS); |
|
} |
|
|
|
/* |
/* |
* L'appel système execvp() a généré une erreur et n'a pu exécuter |
* L'appel système execvp() a généré une erreur et n'a pu exécuter |
Line 3927 instruction_syseval(struct_processus *s_
|
Line 3924 instruction_syseval(struct_processus *s_
|
write_atomic(s_etat_processus, pipes_erreur[1], " ", 1); |
write_atomic(s_etat_processus, pipes_erreur[1], " ", 1); |
close(pipes_erreur[1]); |
close(pipes_erreur[1]); |
|
|
|
if ((*s_etat_processus).langue == 'F') |
|
{ |
|
printf("+++Système : erreurinterne dans SYSEVAL [%d]\n", |
|
(int) getpid()); |
|
} |
|
else |
|
{ |
|
printf("+++System : SYSEVAL internal error [%d]\n", |
|
(int) getpid()); |
|
} |
|
|
exit(EXIT_SUCCESS); |
exit(EXIT_SUCCESS); |
} |
} |
else |
else |
Line 4031 instruction_syseval(struct_processus *s_
|
Line 4039 instruction_syseval(struct_processus *s_
|
return; |
return; |
} |
} |
|
|
while((ios = (int) read_atomic(s_etat_processus, |
while((ios = (int) read_atomic_signal(s_etat_processus, |
pipes_sortie[0], &(tampon[pointeur]), |
pipes_sortie[0], &(tampon[pointeur]), |
(size_t) longueur_lecture)) > 0) |
(size_t) longueur_lecture)) > 0) |
{ |
{ |
Line 4067 instruction_syseval(struct_processus *s_
|
Line 4075 instruction_syseval(struct_processus *s_
|
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
} |
} |
|
|
|
if ((*s_etat_processus).var_volatile_requete_arret == -1) |
|
{ |
|
if ((*s_etat_processus).var_volatile_alarme == -1) |
|
{ |
|
kill(pid, SIGKILL); |
|
} |
|
else |
|
{ |
|
kill(pid, SIGTERM); |
|
} |
|
} |
} |
} |
|
|
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |