[C] Comment detecter un TimeOut ?

Résolu
Xpin² Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjours.
Voilà, en gros je lance une fonction qui peux bloquer un certain temps ou pas duttout ( SDLNet_TCP_Recv( ); ). Avez vous une idée de comment je pourrai faire pour afficher un message d'erreur si jamais la fonction ne reponds pas au bout de 10sec par exemple. Un Timeout quoi. Merci

4 réponses

Naster
 
Salut!
Au fais tu programe en.... + de détailles.
a+
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Naster : cf topic ;o)

Pour ton problème tu peux créer utiliser utiliser
- la fonction wait / waitpid : man 2 wait
- la fonction time : man time

Bonne chance
0
Xpin² Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Hum ... bien vu mamie.. !

sinon d'après ce que j'ai vu les fonction wait et time attendent toutes les 2 la fin d'execution de la fonction en question. peut être que je me trompe ?

Enfait, pour être un peu plus précis, je programme en C à l'aide de SDL ( parceque c multiplateformes ) et j'essaye de me connecter à un serveur. Et apparemment, la fonction de connection ne rend la main que si le serveur est joignable... sinon, elle bloque.

Bref, j'ai trouvé une solution bancale. Je lance la fonction dans une thread ( encore grace à SDL ) j'attends 0.5 seconde ( sleep(); ), et je tue la thread. Ensuite je regarde si elle avait fini ou pas !!!
Voilà, mais c'est pas très très Classe vu que dans la pluspart des cas je vais attendre pour rien.
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
sinon d'après ce que j'ai vu les fonction wait et time attendent toutes les 2 la fin d'execution de la fonction en question. peut être que je me trompe ?

Le wait oui, le time non :
       #include <time.h>
       time_t time(time_t *t);


Voilà, mais c'est pas très très Classe vu que dans la pluspart des cas je vais attendre pour rien.


Boarf ta solution est pas si mal que ça ;) L'informatique c'est parfois peu subtil ^^
0