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