bonjour!
Je deviens fou sur un bug que me donne DDD avec les lectures sur stdin.


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
32
33
34
int main( int argc, char *argv[] )
{
	char command[1024];
 
 
 
 
	printf("Comandos: \nr: resuelve el nombre de un host\n"
		"i: devuelve el nombre correspondiente a una IP\n"
		"m: devuelve los nombres de servidores de correo de un dominio\n"
		"c: cambia el sevidor de nombres a una nueva IP\n"
		"exit: salir del cliente dns\n\n");
 
 
		//interactif
		printf("> ");
 
// L'ERREUR SE PRODUIT ICI \/ 
		fgets(command, 1024, stdin); 
 
		while(strncmp(command, "exit\n", sizeof("exit\n"))!=0)
		{
			if(process(command))
			{
				printf("Sintaxa del comando incorrecta\n");
			}
			printf("> "); fflush(stdin);
			fgets(command, 1024, stdin);
		}
 
 
 
	return 0;
}

Ce qu'il se passe, c'est que lorsque j'execute le programme avec DDD,
lors du fgets, DDD insere sur stdin : "1\n"
au lieu de me laisser taper ma commande.
Je n'ai pas encore très bien compris la logique.
Cela arrive sur différentes machines.
Cela n'arrive pas seulement avec fgets mais aussi avec fgetc ou getline.
Cela arrive même lorsque je fais un fflush.
Cela n'arrive pas avec gdb en ligne de commande.
Cela arrive aussi avec d'autres sources, mais pas forcément tout le temps.
Je ne sais vraiment quoi à quoi ça peut être du.
Des pistes? Sinon je vais devoir changer de debuggueur