Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: yoelmend en 30 Julio 2017, 05:26 am



Título: Limitar el tiempo de ejecucion de una funcion.
Publicado por: yoelmend en 30 Julio 2017, 05:26 am
Hola a todos esta vez tengo la siguiente duda.
Como  limitar el tiempo de ejecucion de una funcion?
Me explico. Tengo una función que hace una llamada al systema (descarga un archivo por wget) sin embargo hasta que no descarga el archivo el programa no puede seguir caminando y esto me pone en una situacion algo complicada ya que la ejecucion y el tiempo de descarga dependera de la velocidad del internet, el servidor, la conexion etc. Como hacer para que pasado x cantidad de tiempo se deje de ejecutar ese hilo y siga el programa ?

 void descargar(){
system("wget http://...........");
}



Título: Re: Limitar el tiempo de ejecucion de una funcion.
Publicado por: engel lex en 30 Julio 2017, 05:28 am
puedes usar multihilo y matar el hilo cuando haya excedido el tiempo, o simplemente esperar asincronamente por la respuesta


Título: Re: Limitar el tiempo de ejecucion de una funcion.
Publicado por: yoelmend en 30 Julio 2017, 05:31 am
Gracias por tu respuesta, lo que no tengo muy claro es como limitar el tiempo de ejecucion, saludos


Título: Re: Limitar el tiempo de ejecucion de una funcion.
Publicado por: engel lex en 30 Julio 2017, 05:34 am
así mismo, creas un hilo para la descarga y la aplicación en espera, si el hilo responde rompe la espera, si la espera llega al final, detiene el hilo


Título: Re: Limitar el tiempo de ejecucion de una funcion.
Publicado por: aurquiel en 4 Agosto 2017, 05:20 am
Asi a lo rapido y facil te diria correr un segundo con un sleep de tiempo y cuando termine verifique si el hilo de descarga termino sino mata el hilo y despues el hilo de espera muere tambien.

Es lo mas facil que se me ocurre.

Otra forma mas elaborada seria obtener el tiempo del sistema y verficar cuando pase de cierto valor.

Igual en ambos casos necesitarias dos hilos uno que descargue y otro que chequee el tiempo como dijeron mas arriba de mi comentario


Título: Re: Limitar el tiempo de ejecucion de una funcion.
Publicado por: ivancea96 en 4 Agosto 2017, 13:26 pm
¿No tiene wget la opción de ponerle timeout?

Forzar un hilo a terminar debería ser la última opción.


Título: Re: Limitar el tiempo de ejecucion de una funcion.
Publicado por: engel lex en 4 Agosto 2017, 14:16 pm
¿No tiene wget la opción de ponerle timeout?

Forzar un hilo a terminar debería ser la última opción.

Creo que wget no tienen timeout de descarga, es decir, si algo falla si, pero si la descarga está en camino, no