Problema de exec secuencial de archivos[C]

Iniciado por MrJava, 4 Abril 2013, 16:24 PM

0 Miembros y 1 Visitante están viendo este tema.

MrJava

Buenas tardes.
Soy nuevo en estos foros y me preguntaba si no sería mucha molestia que me ayudaraís con un problema que tengo:

 Mi programa se dedica a abrir un directorio, buscar los ficheros que contiene y con cada fichero, ejecutar un mandato.(NOTA: No esta del todo escrito aqui):


int main(int argc, char* argv[])
{
 int error = 0;
 DIR * dir_ini;

 if(((dir_ini = opendir(argv[1])) != NULL) && ((chdir(argv[1])) == 0)) /*Abrimos el directorio inicial*/
 {
   struct dirent * archivo;
   char * nombre;
   int status, pid, fd[2];
   while((archivo = readdir(dir_ini)) != NULL) /*Vamos recorriendo su contenido*/
    {
       nombre = (archivo->d_name);
        pipe(fd);
        pid = fork();
        switch(pid)
        {
           case -1:
             perror("fork");
             exit(1);
            case 0: /* El hijo pasa los parametros */
             close(fd[0]);
             close(1);
             dup(fd[1]);
             close(fd[1]);
             printf("%s/%s\r", dir_ini, nombre); /*Paso del formato al string*/
             break;

            default: /* El padre ejecuta el mandato */
             close(fd[1]);
             close(0);
             dup(fd[0]);
             close(fd[0]);
             while(pid != wait(&status));
             error = execvp(argv[5],&argv[5]); /*Argv[5] es el mandato a ejecutar    una vez por archivo, como por ejemplo "wc -l" */
             error = 4;
             fprintf(stderr,"%s: Error(%d), %s\n",argv[0],error,"No se puede ejecutar el mandato");
             exit(error);
      }
    }
 }
}

Mi problema esta en que mi programa solo lo ejecuta con un archivo, en vez de ir uno por uno ejecutandolo.

Alguna idea?

Gracias por vuestro tiempo. :P