void initAutomata(const char *cad, int *p, int *c) { *c = 0; if(*p < strlen(cad)) q0(cad, p, c); fprintf(stdout, "La cadena \"ing\" fue encontrada %d veces\n", *c); inicializar(); colorearPantalla(); tituloVentana(); estadoCualquiera(120.0, 250.0, "q0"); estadoCualquiera(270.0, 250.0, "q1"); estadoCualquiera(420.0, 250.0, "q2"); estadoFinal(570.0, 250.0, "q3"); grafoDirigido(120.0+40.0, 250.0, 270.0-40.0, 250.0, 1, "i"); grafoDirigido(270.0+40.0, 250.0, 420.0-40.0, 250.0, 1, "n"); grafoDirigido(420.0+40.0, 250.0, 570.0-40.0, 250.0, 1, "g"); grafoDirigido(270.0, 250.0-40.0, 0.0, 0.0, 0, "i"); grafoDirigido(110.0+40.0, 250.0+30, 280.0-40.0, 250.0+30, -1, "E-n"); grafoDirigido(110.0+40.0, 190.0+30, 420.0-40.0, 190.0+30, -1, "E-n-g"); al_flip_display(); while(1) { al_wait_for_event(queue_evento, &evento); if(evento.type == ALLEGRO_EVENT_DISPLAY_CLOSE) break; } about(); finalizar(); }
int main(int argc, char *argv[]) { signal(SIGUSR1, (void*) manejarSenial); logger = log_create("/home/utnso/personaje.log", "PERSONAJE", true, LOG_LEVEL_TRACE); log_info(logger, "Log creado con exito, se procede a loguear el proceso Personaje"); log_debug(logger, "Chequeando el path del personaje..."); if (argv[1] == NULL ) { log_error(logger, "El path del personaje no puede ser vacio."); log_destroy(logger); return EXIT_FAILURE; } path = argv[1]; int levantarConfig = levantarPersonaje(path); if (levantarConfig == 1) { return EXIT_FAILURE; } enviarSeniales(); int resultado = procesar(); if (resultado == 1) { return EXIT_FAILURE; } finalizar(); return EXIT_SUCCESS; }
int main(void){ inicializar(); colorearPantalla(); al_draw_filled_circle(200, 160, 130.0, al_map_rgb_f(1.0, 0.0, 1.0));//Crear un círculo: x =200px,y =160px radio =130px,color morado: R=255, G=0, B=255 al_flip_display(); // Dibujar en pantalla todo lo almacenado en el buffer, en este caso solamente está el círculo de arriba system("read -t 5"); // Cerrar la ventana después de 5 segundos (Linux) printf("Por Eder Or - www.multiaportes.com\n"); finalizar(); return 0; }
void executa(int cliSock, char *str) { char *ops = strtok(str, " "); if (strcmp(ops,"registrar")==0){ registrar(str); } else if (strcmp(ops,"listar\n")==0){ listar(); } else if (strcmp(ops,"finalizar\n")==0){ finalizar(); } else{ sprintf(str, "Comando nao encontrado!\n"); } }
int32_t hiloEjecucionCPU(t_HiloCPU* paramsCPU) { log_info(MemoriaLog,"Esperando pedidos de Cpu \n"); int32_t codigoOperacion; codigoOperacion = recibirCodigoOperacion(paramsCPU->cpuSocket); if(codigoOperacion==-1) { log_error(MemoriaLog, RED"No se recibió correctamente el código de operación\n"RESET); return EXIT_FAILURE; } while(codigoOperacion!=0) { switch(codigoOperacion) { case codigo_iniciar: iniciar(paramsCPU->cpuSocket, paramsCPU->swapSocket); break; case codigo_finalizar: finalizar(paramsCPU->cpuSocket, paramsCPU->swapSocket); break; case codigo_leer: lectura(paramsCPU->cpuSocket, paramsCPU->swapSocket); break; case codigo_escribir: escritura(paramsCPU->cpuSocket, paramsCPU->swapSocket); break; } codigoOperacion = recibirCodigoOperacion(paramsCPU->cpuSocket); if(codigoOperacion==-1) { log_error(MemoriaLog, RED"No se recibió correctamente el código de operación\n"RESET); return EXIT_FAILURE; } } if(codigoOperacion==0){ log_info(MemoriaLog, "Se desconectó un CPU\n"); bool PorCerrado(sock_t* socket){ return socket->fd==0; } int32_t veces = list_count_satisfying(CPUsConectados,(void*)PorCerrado); int32_t it; for(it=0; it<veces; it++){ list_remove_and_destroy_by_condition(CPUsConectados, (void*)PorCerrado, (void*)clean_socket); } }
int main(){ carro *inicio=NULL,*fim=NULL; int opc,contador=1; do{ printf("\nDigite - '1' Entrada '2' Saida '3' Ordenar '0'finalizar\n "); scanf("%d",&opc); if(opc==1){ inserir(&inicio,&fim,contador); contador++; }else if(opc==2){ finalizar(&inicio); contador--; }else if(opc==3) ordem(&inicio,contador); }while(opc!=0); getch(); return 0; }
void initAutomata(const char *cad, int *p, int *c) { *c = 0; if(*p < strlen(cad)) q0(cad, p, c); if(*c == 1) fprintf(stdout, "La cadena tiene todos los valores pares de ceros y unos\n"); else fprintf(stdout, "La cadena no cumple con la paridad de ceros y unos\n"); inicializar(); colorearPantalla(); tituloVentana(); estadoFinal(250.0, 150.0, "q0"); estadoCualquiera(500.0, 150.0, "q1"); estadoCualquiera(250.0, 400.0, "q3"); estadoCualquiera(500.0, 400.0, "q2"); grafoDirigido(250.0+40.0, 180.0, 500.0-40.0, 180.0, 1, "1"); grafoDirigido(250.0+40.0, 130.0, 500.0-40.0, 130.0, -1, "1"); grafoDirigido(250.0-30, 200.0, 250.0-30, 360, 11, "0"); grafoDirigido(250.0+30, 200.0, 250.0+30, 360, -11, "0"); grafoDirigido(250.0+40.0, 430.0, 500.0-40.0, 430.0, 1, "1"); grafoDirigido(250.0+40.0, 370.0, 500.0-40.0, 370.0, -1, "1"); grafoDirigido(500.0-30.0, 200.0, 500.0-30, 360, 11, "0"); grafoDirigido(500.0+30.0, 200.0, 500.0+30, 360, -11, "0"); al_flip_display(); while(1) { al_wait_for_event(queue_evento, &evento); if(evento.type == ALLEGRO_EVENT_DISPLAY_CLOSE) break; } about(); finalizar(); }
int perderVida(bool porDeadlock) { if (sacarVida(personaje) > 0) { if (porDeadlock) { log_debug(logger, "El personaje %s perdio una vida, ahora le quedan (%d), causa:DEADLOCK", personaje->nombre, personaje->vidas); } else { log_debug(logger, "El personaje %s perdio una vida, ahora le quedan (%d) causa:SIGTERM", personaje->nombre, personaje->vidas); } if (!porDeadlock) { log_debug(logger, "Notificando muerte al planificador. Personaje:%s", personaje->nombre); notificarMuerte(socketPlanificador); esperarConfirmacionDelPlanificador(socketPlanificador); log_debug(logger, "Notifico la liberacion de recursos. Personaje:%s", personaje->nombre); liberarRecursos(socketNivel); } else if (porDeadlock) { MPS_MSG* mensajeAEnviar = malloc(sizeof(MPS_MSG)); mensajeAEnviar->PayloadDescriptor = MUERTE_POR_DEADLOCK; mensajeAEnviar->PayLoadLength = sizeof(char); mensajeAEnviar->Payload = personaje->simbolo; log_debug(logger, "Notifico muerte por deadlock al nivel. Personaje:%s", personaje->nombre); enviarMensaje(socketNivel, mensajeAEnviar); free(mensajeAEnviar); } MPS_MSG* mensajeARecibir = malloc(sizeof(MPS_MSG)); recibirMensaje(socketNivel, mensajeARecibir); if (mensajeARecibir->PayloadDescriptor != MUERTE_CORRECTA) { return EXIT_FAILURE; } free(mensajeARecibir); close(socketPlanificador); close(socketNivel); int resultado = procesar(); if (resultado == 1) { return EXIT_FAILURE; } finalizar(); } else { if (porDeadlock) { log_debug(logger, "El personaje %s se quedo sin vidas, causa:DEADLOCK", personaje->nombre, personaje->vidas); } else { log_debug(logger, "El personaje %s se quedo sin vidas, causa:SIGTERM", personaje->nombre, personaje->vidas); } if (!porDeadlock) { log_debug(logger, "Notificando muerte al planificador. Personaje:%s", personaje->nombre); notificarMuerte(socketPlanificador); esperarConfirmacionDelPlanificador(socketPlanificador); log_debug(logger, "Notifico la liberacion de recursos. Personaje:%s", personaje->nombre); liberarRecursos(socketNivel); } else if (porDeadlock) { MPS_MSG* mensajeAEnviar = malloc(sizeof(MPS_MSG)); mensajeAEnviar->PayloadDescriptor = MUERTE_POR_DEADLOCK; mensajeAEnviar->PayLoadLength = sizeof(char); mensajeAEnviar->Payload = personaje->simbolo; log_debug(logger, "Notifico muerte por deadlock al nivel. Personaje:%s", personaje->nombre); enviarMensaje(socketNivel, mensajeAEnviar); free(mensajeAEnviar); } MPS_MSG* mensajeARecibir = malloc(sizeof(MPS_MSG)); recibirMensaje(socketNivel, mensajeARecibir); if (mensajeARecibir->PayloadDescriptor != MUERTE_CORRECTA) { return EXIT_FAILURE; } free(mensajeARecibir); close(socketPlanificador); close(socketNivel); int levantarConfig = levantarPersonaje(path); if (levantarConfig == 1) { return EXIT_FAILURE; } int resultado = procesar(); if (resultado == 1) { return EXIT_FAILURE; } finalizar(); } return EXIT_SUCCESS; }