SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Mountain en Lunes 28 de Mayo de 2007, 14:04

Título: Ejecucion De Programas Con Pipes
Publicado por: Mountain en Lunes 28 de Mayo de 2007, 14:04
Tengo un pequeño dilema con las redirecciones para poder programar un comando usando pipes.
si tengo la orden:

who | wc -l >fichero.txt

Tengo una parte del codigo


int pfd[2];
switch(id=fork()) {
      case -1:   error("fork");
      case 0:   /* 1. hijo who*/
         printf("Creado el proceso who\n");

         if(close(1)==-1) error("close");
         if(dup(pfd[1])!=1) error("dup");
         if((close(pfd[0])==-1) ||
            (close(pfd[1])==-1) )  error("close");
         execlp("who","who",NULL);
         error("execlp");
   }
   printf("Lanzado el proceso who(%d)\n",id);

   switch(id=fork()) {
      case -1:   error("fork");
      case 0:   /* 2. hijo wc  */
         printf("Creado el proceso wc\n");
         if(close(0)==-1) error("close");
         if(dup(pfd[0])!=0) error("dup");
         if((close(pfd[0])==-1)||
            (close(pfd[1])==-1) )  error("close");
         execlp("wc","wc","-l",NULL);
         error("execlp");
   }

Ahora he programado solo : who | wc -l y me falta la redireccion al fichero
¿Como lo haria? alguien tiene alguna idea?

Saludos.
Título: Re: Ejecucion De Programas Con Pipes
Publicado por: kaidok en Martes 29 de Mayo de 2007, 16:26
Hmmmm  :rolleyes: . Unix tiene elementos para redefinir la salida o entrada estándar, es decir que sean ellos la entrada o salida estándar si necesidad de redirecciones, creo que era con un comando exec o algo así...

Siento no poder ser más preciso, pero espero que te sirva.