elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No funciona timer en Linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No funciona timer en Linux  (Leído 1,879 veces)
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
No funciona timer en Linux
« en: 9 Marzo 2014, 17:34 pm »

Hola, preciso ayuda de los Linuxeros. Este sencillo código (que mide el tiempo transcurrido entre el inicio del programa y la pulsación de ENTER) no funciona como debe en Linux. En Windows lo probé y está Ok.

El problema es que clock() devuelve siempre cero (0), tanto para t1 como para t2, y por eso no mide el tiempo. ¿Qué es lo que le falta "ajustar" para que funcione en plataformas Linux y/ similares?

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. int main( ) {
  5.  
  6. clock_t t1, t2;
  7.  
  8. t1 = clock();
  9. getchar();
  10. t2 = clock();
  11. printf("Han transcurrido %.2lf s\n", (double)(t2 - t1)/CLOCKS_PER_SEC );
  12.  
  13. }


En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: No funciona timer en Linux
« Respuesta #1 en: 9 Marzo 2014, 17:36 pm »

Lo que mide ahí son los ciclos de reloj, mientras tengas el programa en "pausa" no hay ciclos de reloj.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: No funciona timer en Linux
« Respuesta #2 en: 9 Marzo 2014, 23:45 pm »

Mmmm, entonces la implementación es diferente que en Windows. En Windows el tiempo sí transcurre a pesar de getchar(). Curioso (?!)

Probé este otro, que imprime "1 ... " y espera 3 segundos antes de imprimir "2". Éste sí funciona en Linux de la manera esperada:

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. int main( ) {
  5.  
  6. clock_t t1, t2;
  7. int i, j, k;
  8.  
  9. t1 = clock();
  10. printf( "1 ... " );
  11.        fflush( stdout );
  12. do {
  13. t2 = clock();
  14. } while ( (double)(t2 - t1)/CLOCKS_PER_SEC < 3 );
  15. printf( "2" );
  16. }
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: No funciona timer en Linux
« Respuesta #3 en: 10 Marzo 2014, 00:01 am »

Claro, porque ahí si hace ciclos de reloj. El programa está todo el rato comprobando y actualizando.

Lo de windows debe ser algún efecto lateral de su implementación, pero lo de linux es eso.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como funciona el TIMER
Programación Visual Basic
renga73 7 2,441 Último mensaje 1 Abril 2006, 20:31 pm
por renga73
Funciona en Windows, pero no en linux... « 1 2 »
Programación C/C++
dgg006 10 6,310 Último mensaje 2 Junio 2011, 17:37 pm
por dakomt
[Solucionado] Aplicación de Consola con Timer no funciona
.NET (C#, VB.NET, ASP)
Eleкtro 5 5,321 Último mensaje 8 Abril 2013, 15:39 pm
por Eleкtro
C++ en linux, ¿cómo funciona?
Programación C/C++
X3R4CK3R 4 2,210 Último mensaje 28 Mayo 2014, 13:38 pm
por X3R4CK3R
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines