C Tuyau de STDIN d'un Autre Programme

J'ai peine à comprendre la page de man pour le tuyau, donc j'ai un peu besoin d'aide pour comprendre comment prendre des canalisations d'entrée dans un exécutable externe.

J'ai 2 programmes: principal.o & journal.o

J'ai écrit principal.o à la fourchette. Voici ce qu'il est en train de faire:

  • Parent fourche sera pipe données à l'enfant
  • Enfant fourche sera exec journal.o

J'ai besoin de l'enfant de la fourche pour principal tube de STDIN de journal.o

journal.o prend simplement STDIN & journaux avec horodatage d'un fichier.

Mon code est composé d'un code de diverses StackOverflow pages je ne me souviens pas & la page de man pour le tuyau:

printf("\n> ");
while(fgets(input, MAXINPUTLINE, stdin)){
   char buf;
   int fd[2], num, status;
   if(pipe(fd)){
      perror("Pipe broke, dood");
      return 111;
   }
   switch(fork()){
   case -1:
      perror("Fork is sad fais");
      return 111;

   case 0: //Child
      close(fd[1]); //Close unused write end
      while (read(fd[0], &buf, 1) > 0) write(STDOUT_FILENO, &buf, 1);

      write(STDOUT_FILENO, "\n", 1);
      close(fd[0]);
      execlp("./log", "log", "log.txt", 0); //This is where I am confused
      _exit(EXIT_FAILURE);

   default: //Parent
      data=stuff_happens_here();
      close(fd[0]); //Close unused read end
      write(fd[1], data, strlen(data));
      close(fd[1]); //Reader will see EOF
      wait(NULL); //Wait for child
   }
   printf("\n> ");
}

OriginalL'auteur RandomClown | 2013-11-25