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.
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);
    }
pcap_loop correspond à cette fonction

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);
		}
 
	}
}
Le do while ne se termine jamais.

J'ai essayé cela dans ma fonction principal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
alarm(10);
signal(SIGNALRM,alarm_handler(handle));
Mais cela ne change rien.

Une idée de comment arrêter cet état d'attente ?