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); } } } } |
Alguna idea?
Gracias por vuestro tiempo.