RayR a partir de ahora eres mi nuevo amigo
Cerré los descriptores en el último proceso hijo y funcionó tal como dijiste.
Muchas gracias.
Cerré los descriptores en el último proceso hijo y funcionó tal como dijiste.
Muchas gracias.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúls | grep 'patron' | wc -l
int main (int argc, char *argv[]) {
int i,
fd[2], fd0[2],
pid[3];
/* Creación recurso tubería, por el padre */
pipe(fd);
/* 1er hijo, ejecuta ls */
if ( (pid[0]= fork()) == 0) {
dup2(fd[1], STDOUT_FILENO);
close(fd[0]);
execlp("/bin/ls", "ls", NULL);
perror("Hijo1: Fallo al hacer exec");
exit (1);
}
pipe(fd0);
/* 2do hijo, ejecuta filtro */
if ( (pid[1]=fork()) == 0) {
dup2(fd[0], STDIN_FILENO);
close(fd[1]);
dup2(fd0[1], STDOUT_FILENO);
close(fd0[0]);
char* arg[] = { "sort", "sort", NULL };
execvp(arg[0], &arg[1]);
//execvp(argv[1], &argv[1]);
perror("Hijo2: Fallo al hacer exec");
exit(1);
}
if((pid[2]=fork()) == 0) {
dup2(fd0[0], STDIN_FILENO);
close(fd0[1]);
char* arg[] = { "wc", "wc", "-l", NULL };
execvp(arg[0], &arg[1]);
perror("Hijo2: Fallo al hacer exec");
exit(1);
}
/* El padre no interviene */
close(fd[0]);
close(fd[1]);
close(fd0[0]);
close(fd0[1]);
/*for (i=0; i<2; i++)
wait(pid[i]);*/
exit (0);
}
MSFlexGrid.TextMatrix (MSFlexGrid.RowSel, COL_MATHEMATICS)