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):
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.
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.