Partage
  • Partager sur Facebook
  • Partager sur Twitter

pipe, fork, dup exexvp

c système

    22 mai 2017 à 18:19:26

    Bonsoir tout le monde alors voilà j'essaye de faire un programme qui a un processus père qui contient une commande obtenue par un scanf, qui  créé un fils et celui-ci devra donc contenir aussi cette commande et lui devra l'exécuter et alors l'afficher à l'écran .. Je suis pas super doué en C et j'aimerais pouvoir m'en sortir ..

    Voila mon code : 

    (je sais y manque le dup, execvp, et surement une boucle)

    #include <stdio.h> 

    #include <stdlib.h>

    #include <unistd.h>

    #include <sys/wait.h>

    int main(void){

                            pid_t pid_fils;

                            int descripteurPipe[2];

                            int commande;

                            printf("entrez une commande\n");

                            scanf("%d", &commande);

                            if(pipe(descripteurPipe) != 0){

                                                                           printf("erreur crea pipe\n");

                                                                           return 0;

                                                                          }

                             pid_fils = fork();

                             if(pid_fils == -1){

                                                        printf("Erreur process\n");

                                                        return 1;

                              }

                             if(pid_fils == 0){

                                                      close(descripteurPipe[1]);

                                                       read(descripteurPipe[0], &commande, sizeof(commande));

                              }

    Je me suis inspiré d'un exemple du cours sur les pipes sur le site, merci pour votre aide d'avance

    -
    Edité par TanguyAlexandre 22 mai 2017 à 18:28:48

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2017 à 18:39:02

      Si tu sais ce que tu dois faire pourquoi tu es la?

      Si tu as un probleme on peut t'aider, mais si on te donne la solution tu ne progresseras pas.

      Il faut donc que tu rajoutesune condition: JE SUIS LE PROCESSUS PERE ou tu ecris dans le tube.

      -
      Edité par thetui 22 mai 2017 à 18:44:18

      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2017 à 18:51:38

        si vous savez m'expliquer le fonctionnement du dup et du exec ça serait sympa ..

        Et j'ai pas compris la condition que je dois rajouter

        ..

        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2017 à 19:03:34

          dup() sert a dupliquer un descripteur de fichier

          exec() sert aexecuter unecommande

          Mais d'abord il faut que tu comprennes la communication

          entree du programme 
          tu cree un tube
          tu demande une commande
          tu fais un fork
          dans le pere:
            tu fermes le tube en lecture
            tu l'ecris dans le tube
          dans le fils:
            tu fermes le tube en ecriture
            tu lis la commandes
            tu executes la commande



          • Partager sur Facebook
          • Partager sur Twitter
            23 mai 2017 à 8:02:59

            Oui, ok et ça j'ai compris et donc ?
            • Partager sur Facebook
            • Partager sur Twitter
              23 mai 2017 à 8:54:34

              Maintenant tu peux coder et on te dira si ca va
              • Partager sur Facebook
              • Partager sur Twitter

              pipe, fork, dup exexvp

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown