version 1.103, 2019/02/17 08:59:39
|
version 1.105, 2019/02/28 12:40:38
|
Line 3375 instruction_sto(struct_processus *s_etat
|
Line 3375 instruction_sto(struct_processus *s_etat
|
struct |
struct |
{ |
{ |
struct_processus *s_etat_processus; |
struct_processus *s_etat_processus; |
struct_liste_chainee *stdin; |
struct_liste_chainee *fd_stdin; |
int pipe_entree; |
int pipe_entree; |
volatile int erreur; |
volatile int erreur; |
} arguments_stdin; |
} arguments_stdin; |
Line 3395 thread_stdin(void *argument)
|
Line 3395 thread_stdin(void *argument)
|
|
|
ptr = argument; |
ptr = argument; |
|
|
l_element_courant = (*ptr).stdin; |
l_element_courant = (*ptr).fd_stdin; |
s_etat_processus = (*ptr).s_etat_processus; |
s_etat_processus = (*ptr).s_etat_processus; |
(*ptr).erreur = d_es; |
(*ptr).erreur = d_es; |
|
|
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 3991 instruction_syseval(struct_processus *s_
|
Line 3999 instruction_syseval(struct_processus *s_
|
} |
} |
|
|
arguments_stdin.s_etat_processus = s_etat_processus; |
arguments_stdin.s_etat_processus = s_etat_processus; |
arguments_stdin.stdin = l_element_stdin; |
arguments_stdin.fd_stdin = l_element_stdin; |
arguments_stdin.pipe_entree = pipes_entree[1]; |
arguments_stdin.pipe_entree = pipes_entree[1]; |
|
|
if (pthread_create(&thread_stdin_tid, &attributs, thread_stdin, |
if (pthread_create(&thread_stdin_tid, &attributs, thread_stdin, |