Bonjour à tous
J'ai crée un soft avec la librairie libpcap, lorsque mon soft détecte le flux que je souhaite vérifier la disponibilité ça marche sans problème. Mais lorsque le flux est absent mon soft attend le flux. Or ce que je veux c'est que lorsqu'il y a pas de flux disponible, il me renvoi un code de retour (-1).
C'est à cet endroit que "attend" mon programme.
pcap_loop correspond à cette fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(pcap_loop(handle,10,callback,buff)<0){ (void)fprintf(stderr,"pcap_loop: %s\n",pcap_geterr(handle)); return (-1); }
Le do while ne se termine jamais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user) { register int n; for (;;) { if (p->sf.rfile != NULL) { /* * 0 means EOF, so don't loop if we get 0. */ n = pcap_offline_read(p, cnt, callback, user); } else { /* * XXX keep reading until we get something * (or an error occurs) */ do { n = p->read_op(p, cnt, callback, user); } while (n == 0); } if (n <= 0) return (n); if (cnt > 0) { cnt -= n; if (cnt <= 0) return (0); } } }
J'ai essayé cela dans ma fonction principal :
Mais cela ne change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 alarm(10); signal(SIGNALRM,alarm_handler(handle));
Une idée de comment arrêter cet état d'attente ?
Partager