Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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();
}
Ejemplo n.º 3
0
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();
}