Ejecución de procesos

Amparo133
12 de Abril del 2010
Hola a [email protected],
mi duda se trata de una ejecución secuencial de varios procesos. Espero explicar bien lo que hay que hacer. Por un lado tengo un ejecutable que lee caracteres por su entrada estándard y escribe por su salida estándard las tres primeras lineas que encuentre. Tengo otro ejecutable que lee un fichero que cada línea contiene un número de fichero, va leyendo los nombres de fichero y el programa los almacena en una tabla. Por lo tanto tenemos dos ejecutables y dos ficheros de texto. El resultado final debe ser obtener las tres primeras líneas de un número determinado de ficheros, dependiendo de qué fichero de texto se le pase al segundo ejecutable, este fichero se le pasa como argumento. El resultado de un ejecutable ha de ser la entrada del segundo. Todo esto en C.

Al primer ejecutable se le pasa el fichero así: ./primerEjecutable < fichero1, al segundo es ./segundoEjecutable fichero2.
He hecho lo siguiente pero no me funciona, esto sería sólo el primer paso, conseguir que el argumento que le paso haga ejecutar el primer ejecutable.

int main(int argc, char *argv[])
{
int fdin, p[2], result;

if (argc!=2) error("Espero un argumento");

if (pipe(p) < 0) error("Error creando pipe");

if ((fdin=open(argv[1], O_RDONLY)) < 0)
error("Error abriendo fichero de entrada");

switch (fork())
{
case -1: error("Error creando el hijo");

case 0: if (dup2(fdin, 0) < 0)
error("Error dup fdin");
if (dup2(p[1], 1) < 0)
error("Error dup fdout");
close(fdin);
close(p[0]); close(p[1]);
execl(".ejecutable1", "ejecutable1", NULL);
error("Error al hacer el exec");

default: close(p[1]);
if (wait(NULL) < 0)
error("Error en el Wait del hijo");
}
Agradecería mucho cualquier ayuda.

Amparo133
12 de Abril del 2010
Ya lo he solucionado.