Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: minari02 en 30 Diciembre 2013, 20:55 pm



Título: sustituto de funcion sleep de window.h c++?
Publicado por: minari02 en 30 Diciembre 2013, 20:55 pm
Hola!!  ;D

Estoy aprendiendo C++ y estuve viendo ejemplos de como usar el do-while y pues me he encontrado con este ejemplo:

Código
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. int main()
  5.  
  6. {
  7. bool salida = false;
  8. int num;
  9. int sec=2000;
  10. do{
  11.  cout<<"\n ingrese un numero ";
  12.   cin>>num;
  13.      cout<<"Validando .";
  14. for(int i = 0; i < 9; i++){
  15.         cout<<".";
  16.           Sleep(200);
  17.       }
  18. if(num == 10) salida = true;
  19.    }
  20. while(!salida);
  21. return 0;
  22.  
  23. }
  24.  

el programa lo que hace es verificar si el numero ingresado es 10 o no y al momento de imprimir "Validando" que valla saliendo un punto tras otro despacio, como si estuviera cargando...

se que es algo tonto, pero me gustaría saber una forma de que funcione asi en linux, alguna funcion que sustituya el Sleep(); o algo asi.

Aprovechando quiero preguntarles, hay alguna función importante en la librería windows.h? o solo sirven de adorno sus funciones?

Gracias.  :D


Título: Re: sustituto de funcion sleep de window.h c++?
Publicado por: Shell Root en 30 Diciembre 2013, 20:58 pm
Creo que :http://stackoverflow.com/questions/10918206/cross-platform-sleep-function-for-c


Título: Re: sustituto de funcion sleep de window.h c++?
Publicado por: ivancea96 en 30 Diciembre 2013, 21:53 pm
Podrías hacerlo con la biblioteca Time. Un poco bestia, pero podría ir bien:

Código
  1. //
  2. #include <Time.h>
  3. //
  4. void time(int milisecs){
  5.    Time A = time();
  6.    while(time()<A+milisecs);
  7. }

Cabe decir, que no creo que ese código funcione. Y esque nunca usé las variables de Time.h, así que no se bien la sintaxis, ni los retornos de sus funciones. Pero es la idea :D


Título: Re: sustituto de funcion sleep de window.h c++?
Publicado por: amchacon en 31 Diciembre 2013, 09:37 am
En linux es con minúscula:
Código
  1. sleep(10);

Tienes que incluir la librería pthread.h y linkar con pthread

Aprovechando quiero preguntarles, hay alguna función importante en la librería windows.h? o solo sirven de adorno sus funciones?
Eso es la windows API. Te permite hacer tropecientas cosas:
http://msdn.microsoft.com/en-us/library/hh920509%28v=vs.85%29.aspx

Podrías hacerlo con la biblioteca Time. Un poco bestia, pero podría ir bien:

Código
  1. //
  2. #include <Time.h>
  3. //
  4. void time(int milisecs){
  5.    Time A = time();
  6.    while(time()<A+milisecs); del reloj
  7. }

Cabe decir, que no creo que ese código funcione. Y esque nunca usé las variables de Time.h, así que no se bien la sintaxis, ni los retornos de sus funciones. Pero es la idea :D
Eso no es la función sleep, eso es un asesinato de rendimiento.

Estás haciendo iteraciones en cada ciclo. Ahora mismo estás chupando un hilo de ejecución entero.

De hecho, hay un sencillo progama para saturar la CPU que consiste en crear un bucle:
Código
  1. while(1);

Y tantos hilos de ejecución como núcleos tenga un procesador.


Título: Re: sustituto de funcion sleep de window.h c++?
Publicado por: minari02 en 31 Diciembre 2013, 20:47 pm
En linux es con minúscula:
Código
  1. sleep(10);
Tienes que incluir la librería pthread.h y linkar con pthread
Eso es la windows API. Te permite hacer tropecientas cosas:
Código
  1. while(1);

como es eso de linkiar? me podrias poner como quedaria el codigo final profavor?

Gracias!  :)


Título: Re: sustituto de funcion sleep de window.h c++?
Publicado por: amchacon en 1 Enero 2014, 14:50 pm
Código
  1. #include <pthread.h>
  2.  
  3. int main()
  4. {
  5.    sleep(3); //dormir 3 segundos
  6.    return 0;
  7. }

Lo de linkar no tiene nada que ver con el código, sino con la configuración del compilador. Si usas algún IDE, busca alguna opción para "linker settings".