Bonjour,
J'ai un programme qui écrit le chiffre "2" dans un tube nommé :
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
 
int afficher(int message)
{
 
	FILE *fp;
	int nb_elem;
 
	fp=fopen("tube", "w");
	if (fp == NULL) 
	{
		printf("erreur ouverture\n");
		return -1;
	}
 
	nb_elem=fwrite(&message, sizeof(int), 1, fp);
	if (nb_elem != 1) printf("erreur d'écriture");
 
	fclose(fp); 
}
 
int main(void)
{
	int a;
	a=afficher(2);
 
	return 1;
}
Et un autre programme qui lit :
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
int main ()
{
 
	FILE *fp;
	int i=1,a=0;
	int nb_elem;
 
	fp=fopen("tube", "r" );
	if (fp == NULL) printf("erreur d'ouverture");
 
	//while(1)
	//{
		nb_elem=fread(&i, sizeof(int), 1, fp);
 
		if (nb_elem == -1) printf("erreur de lecture");	
		if (i != 1) 
		{
			printf("%d",i);
			i=1;
 
		}
 
	//}
	fclose(fp);
	return 1;
}
Mon problème : Si je vire le While, ça marche (mon terminal de réception affiche bien "2"), et si je ne le vire pas, ça ne marche pas (il n'affiche rien et reste bloqué). Pourquoi ?

Merci de votre aide, je suis vraiment perdu là :/