Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MrJava en 4 Abril 2013, 16:24 pm



Título: Problema de exec secuencial de archivos[C]
Publicado por: MrJava en 4 Abril 2013, 16:24 pm
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