[C] Comment detecter un TimeOut ?

Résolu/Fermé
Xpin² Messages postés 4 Date d'inscription mercredi 22 juin 2005 Statut Membre Dernière intervention 27 juin 2005 - 26 juin 2005 à 06:09
mamiemando Messages postés 33540 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 février 2025 - 27 juin 2005 à 19:40
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

Salut!
Au fais tu programe en.... + de détailles.
a+
0
mamiemando Messages postés 33540 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 février 2025 7 828
26 juin 2005 à 21:51
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 mercredi 22 juin 2005 Statut Membre Dernière intervention 27 juin 2005
27 juin 2005 à 05:12
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 33540 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 février 2025 7 828
27 juin 2005 à 19:40
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