Pointeurs

Fermé
cemoi - 12 août 2009 à 19:08
 cemoi - 12 août 2009 à 23:33
Bonjour,
j'essaie de faire communiquer 2 programmes avec un pipe,mais mon programme ne donne pas le bon résultat. je pense que mon probleme est dù a une mauvaise utilisation des pointeurs, mais je n'arrive pas a trouver ce qui cloche...

le 1er programme est le suivant:
int main(int argc, char* argv[])
{
	int n1,n2;
	int *result;
	char op;
	int pid,dp;
	unlink("pipe");
	mkfifo("pipe",0666);
	pid=fork();
	if (pid==0)
		execv("exo2_3",NULL);
	else
		if (argc!=4)
		{
			printf("erreur!!\n");
			exit(0);
		}
		n1=atoi(argv[1]);
		n2=atoi(argv[3]);
		op=*(argv[2]);

		switch(op)
		{
			case'+':
				*result=n1+n2;
				break;
			case'-':
				*result=n1-n2;
				break;
			case'x':
				*result=n1*n2;
				break;
			case'/':
				*result=n1/n2;
				break;
		}
		dp=open("pipe",O_WRONLY);
		if(dp==0)
			printf("pb ouverture du pipe 1");
		write(dp,result,sizeof(int));
		close(dp);

		exit(0);
}



et le 2nd:
int main(void)
{
	int dp,re, numb;
	char *ans;
	dp=open("pipe",O_RDONLY);
	if(dp==0)
		printf("pb ouverture du pipe 2");
	re=read(dp,ans,sizeof(char));
	if(re==0)
		printf("pb lecture du pipe");
	numb=atoi(ans);
	printf("le resultat est\n");
	printf("egal à %c\n",ans);
	close (dp);
	exit(0);
}



Quand j'exécute le programme, il apparait:
"le resultat est
egal à"
mais le résulat n'apparait pas...

Si vous pouviez me dire ce qui bloque, ce serait sympa

1 réponse

personne n'a d'idée sur ce qui bloque ?

Merci
0