int main(int argc, char **argv) { /*argc = nº de parámetros argv[0]="simulacion"; nombre del main argv[1]=disco(sistema de ficheros) se ha de llamar disco.imagen */ if (argc != 2) { printf("ERROR: simulacion => main: Faltan argumentos!!! El número permitido de argumentos son 2. \n"); return (EXIT_FAILURE); } else { if (bmount(argv[1]) == -1) { printf("ERROR: simulacion => main: Error al abrir (bmount) el sistema de ficheros.\n"); return (EXIT_FAILURE); } //creamos el directorio de simulación struct tm *tm; time_t tiempo = time(NULL); tm = localtime(&tiempo); memset(dir_sim, 0, strlen(dir_sim)); sprintf(dir_sim, "/simul_%d%02d%02d%02d%02d%02d/", tm -> tm_year + 1900, tm -> tm_mon + 1, tm -> tm_mday, tm -> tm_hour, tm -> tm_min, tm -> tm_sec); printf("Creación del directorio de simulacion %s\n", dir_sim); //mi_creat (ruta, permisos); if (mi_creat(dir_sim, 7) < 0) { printf("ERROR: simulacion => main: Error al crear el directorio %s\n", dir_sim); } else { //Llamamos al enterrador signal(SIGCHLD, enterrador); //Creamos los 100 procesos de escritura int i; for (i = 0; i < num_procesos; i++) { if (fork() == 0) { //quiere decir que hemos podido crear un proceso hijo escrituras(); exit(0); } usleep(200); } printf("Se han creado %d procesos\n", i); //Mientras no hayan acabado todos los procesos, pause(); while (acabados < num_procesos) { //Mientras queden procesos pause(); } //verificamos escrituras verificacion(); if (bumount(argv[1]) == -1) { printf("ERROR: simulacion => main: Error al cerrar (bumount) el sistema de ficheros.\n"); return (EXIT_FAILURE); } } } return 0; }
void confirmacion(void) { show_cfg(); op_select(); if (read == 'A') { verificacion(); reset_flag(); if(error) { writeLCD_menu(9); op_select(); error = 0; } } reset_flag(); }
int main(int argc, char** argv) { if (argc != 2) { printf("simulación: Número de argumentos incorrecto!\n"); return -1; } bmount(argv[1]); char dir_sim[60]; char nomdir[60]; char nomfich[60]; char tiempo[60]; int posMax = 500000; //posMax = (((12+256+256²+256³)-1)*BLOCKSIZE)/sizeof(struct registro); struct tm *miTM; struct registro miRegistro; iniTM(miTM, tiempo); sprintf(dir_sim, "/simul_%s/", tiempo); if (mi_creat(dir_sim, '7') < 0) { bumount(); return -1; } signal(SIGCHLD, enterrador); int x, i; for (x = 0; x < numProc; x++) { switch (fork()) { // Proceso hijo. case 0: sprintf(nomdir, "%sproceso_%d/", dir_sim, getpid()); if (mi_creat(nomdir, '7') < 0) { puts("simulación: error!\n"); return -1; } else { sprintf(nomfich, "%sprueba.dat", nomdir); if (mi_creat(nomfich, '7') < 0) { return -1; } } // Actualizamos semilla de números aleatorios. srand(time(NULL) + getpid()); for (i = 0; i < numEscr; i++) { miRegistro.fecha = time(NULL); miRegistro.pid = getpid(); miRegistro.nEscritura = i + 1; miRegistro.posicion = rand() % posMax; mi_write(nomfich, &miRegistro, miRegistro.posicion * sizeof (struct registro), sizeof (struct registro)); usleep(50000); } printf("\nProceso %d: He acabado.\n", getpid()); exit(0); break; default: NULL; break; } usleep(200000); } while (acabados != numProc) { pause(); } printf("\nProcesos totales: %d\n", acabados); verificacion(dir_sim, acabados); bumount(); }