| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
jabar
Registrado: 20 Ene 2014 Mensajes: 5
| Publicado: 20/01/2014 10:01 pm | | | Título: Bloqueo de sistema operativo por código en C |
| Muy buenas, estaba tratando de probar las alertas "\a" en C con un sencillo código pero al ejecutarlo se bloquea el sistema operativo, uso Ubuntu 13.10 de 64 bits con 10 G de Ram. el código es el siguiente:
| Código: | #include<stdio.h>
int main(void) { int i=0;
while(i < 10) { printf("\a"); }
return 0;
}
|
El sistema deja de responder cada vez que ejecuto el programa y tengo que reiniciar la maquina, me gustaría saber si alguien tiene alguna idea de lo que pasa. |
|
| Volver arriba | |
 |
dehm
Registrado: 29 Abr 2011 Mensajes: 143
| Publicado: 21/01/2014 12:38 am | | | Título: |
| El programa básicamente consiste en un bucle al que no le pones condición de salida.
La variable i vale 0, y mientras sea menor de 10 se seguirá ejecutando el bucle. Dentro del bucle has de definir una condición de salida. Puede ser que vaya cambiando el valor hasta que éste deje de cumplir la condición del bucle, o que pida al usuario ese valor...en fin, tal como está ahora está "condenado" a repetirse, hasta que te ves obligado a reiniciar la máquina.  _________________ Aprendiendo |
|
| Volver arriba | |
 |
jabar
Registrado: 20 Ene 2014 Mensajes: 5
| Publicado: 21/01/2014 12:08 pm | | | Título: |
| Muchas gracias, pero me surge la duda, porque se bloquea el sistema, no podría simplemente permitirme salir de un programa que se esta ejecutando dándole al Ctrl+C?
y otra cosa, porque no escucho ninguna alarma, uso el gcc |
|
| Volver arriba | |
 |
|
daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 21/01/2014 1:06 pm | | | Título: |
| | jabar escribió: | | porque se bloquea el sistema, no podría simplemente permitirme salir de un programa que se esta ejecutando dándole al Ctrl+C? |
Porque tú programa ocupa muchos ciclos de CPU quedando todo el sistema saturado. Cuando envías un break al programa con Ctrl+c ( en Windows creo que es Ctrl+z) el evento queda en cola para ser procesado, pero como el sistema está ocupado puede generarse un retraso de varios segundos; a veces no queda otra que reintentar a lo loco. Si utilizas Linux puede lanzar un comando para matar el programa , asi: killall -9 nombre_app.
| jabar escribió: | | porque no escucho ninguna alarma, uso el gcc |
Porque desde el punto de vista del compilador el programa es sintáticamente correcto. Lo que tienes es un clásico runtime-error o logic-error; los compiladores no encuentran estos tipos de errores.
Saludos. |
|
| Volver arriba | |
 |
|
|