• Viernes 8 de Noviembre de 2024, 18:56

Autor Tema:  Pipes Con Mkfifo  (Leído 973 veces)

kino

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Pipes Con Mkfifo
« en: Martes 20 de Mayo de 2008, 01:15 »
0
stoy implementando un shell y necesito implmentar named pipes, creo q estoy cerca pero hay algo  que falla y creo q va por los pid's de los procesos...
porfavor si alguien entiende de esto, que me eche un cable


if((namedp==1) && (comact = comAnterior(cline))){// si es una named pipe

            pid=getpid();
            sprintf(cpid, "%s%d","/tmp/fifo_sh_pid_", pid);
            if ((mkfifo (cpid, 0)) < 0)
               printf("\nerror al crear la tuberia\n");

            if ((pid = fork()) < 0){
                      perror("smallsh");
                         return(-1);
                 }

             if (pid == 0){ // hijo
               fd_escritura = open(cpid, O_WRONLY);
                   close(1);
               dup(fd_escritura);
                   close(fd_escritura);    //cierra la salida de la tuberia
                   cline = comact;
                   continue;
              }
            fd_lectura = open(cpid, O_RDONLY);
                close(0);
            dup(fd_lectura);
                close(fd_lectura);   //cierra la salida de la tuberia
            break;
         }
         break;

SALIDA:

$ ls -l % grep PRUEBA.c
ls: error de escritura: Descriptor de archivo inválido
grep: (entrada estándar): Descriptor de archivo inválido