sal1 a écrit :
Bonjour à tous,
j'ai un petit soucis avec la fonction wait() dont voici le code : fprintf(stderr,"Avant fork()\n" );
pid = fork (); fprintf(stderr,"pid : %d - Apres fork()\n", pid);
switch (pid)
{
case (pid_t)0 : /* creation du processus fils */
{
fprintf(stderr,"Je suis le fils et je vais lancer mon prog\n" );
etat=execlp("prog",
"prog",
"CUC",
"non",
"annule",
NULL);
/* Echec de l'execution */
fprintf(stderr,"Erreur lors de la tentative d'execution du " );
fprintf(stderr," batch bref_demande_copie \n" );
break;
}
case (pid_t) (-1) : /* creation du fils impossible */
{
fprintf(stderr,"Execution du batch bref_demande_copie " );
fprintf(stderr,"impossible (annulation de la demande de copie " );
fprintf(stderr,"du referentiel CUC non effectuee) \n" );
break;
}
default : /* Le processus pere attend le processus fils */
{
fprintf(stderr,"Je suis le pere et j'attends le processus fils : %d - Attente......\n", pid);
pid=wait(etatpere);
fprintf(stderr,"J'ai fini d'attendre\n" );
if (WIFEXITED (etat))
{
if (WEXITSTATUS(*etatpere) !=0)
{
fprintf (stderr,"Echec de la reinitialisation de la " );
fprintf (stderr,"demande de copie (statut : %d) \n",WEXITSTATUS(*etatpere));
}
}
else
{
if (WIFSIGNALED(*etatpere))
{
fprintf (stderr,"Signal recu lors de la reinitialisation " );
fprintf (stderr,"de la demande de copie : %d \n",WTERMSIG(*etatpere));
}
}
}
}
Le problème c'est que j'ai mon fils qui exécute bien le programme voulu mais le processus père reste en attente indéfiniment
Quelqu'un aurait-il une idée sur ce problème ?
Merci
|