Bonjour à tous,
J'ai un petit problème en C. J'aimerais lire l'entrée standard, de manière à récupérer un charactère, afin de déclencher des événements (menu classique jusque là).
Cependant, suite à une construction un peu particulière, je dois effectuer cette lecture de manière non bloquante, ou à défaut, pendant un intervalle de temps limité.
En effet, dans mon programme, j'ai 2 façons de terminer celui ci :
- recevoir une terminaison locale
- recevoir un événement réseau indiquant la fin du programme.
J'ai donc essayer un fgets, mais celui ci bloque le programme tant qu'il n'a pas reçu d'entrée. (Ce qui pose problème, car cela empêche de recevoir des éléments du réseau.)
J'ai essayé de faire un thread, mais mon thread s'est mis en attente de caractères ... et a oublié de se réveiller quand j'ai tapé sur entrée
Vu que je suis complètement rouillé en C, je suis un peu à la masse.
L'objectif est donc de pouvoir permettre à cette boucle d'écouter soit :
- pjsip_endpt_handle_events(g_endpt, &timeout);
- stdin, de manière à recevoir un caractère.
Est ce que quelqu'un aurait une idée ?
(L'idéal, ce serait un truc portable, mais bon, c'est pas encore noël je crois)
Merci pour votre aide,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 for (;!g_complete;) { pj_time_val timeout = {0, 10}; pjsip_endpt_handle_events(g_endpt, &timeout); char option[10]; puts("Press 'h' to hangup during communication or 'q' to quit"); fgets(option, sizeof(option), stdin); if (option[0] == 'q') { break; } ... }
Museum
Partager