• [^] # Re: Fonction mini shell

    Posté par . En réponse au message Commande qui ne fonctionne pas. Évalué à 1. Dernière modification le 03 décembre 2015 à 23:29.

    Merci Corentin !
    En tenant compte de tes suggestions, j'ai finalement pu ajouter quelques instructions au niveau du parent:

     if (tmp != 0){ // parent : attendre la fin de l'enfant
     if (*mot[i-1] == '&')
     {
     *mot[i-1] = '0円';
     pid_t pid, pid1; 
     int etat; 
     if ((pid1 = fork()) == 0) exit(1); 
     else if ((tmp) == 0) sleep(2),exit(2); 
     else { 
     pid = waitpid(tmp,&etat,0); 
     printf(" fils termine %d son etat %d \n",pid, 
     etat);} 
     } 
     continue;
     }

    En essayant quelques exemples sur le mini shell, j'ai ces résultats:

    ? echo essai1 &
    essai1 &
     fils termine 21473 son etat 0 
    ? echo essai2 &
    essai2 &
     fils termine 21475 son etat 0 
    ? echo essai3 &
    essai3 &
     fils termine 21480 son etat 0

    Au vue des résultats, mes instructions sont-elles optimales surtout pour la gestion de plusieurs processus en arrière plan ? Aussi pourquoi en affichant l'echo, il affiche avec le symbole '&' à la fin ? C'est un peu désagréable, comment me débarrasser de cela ? Merci