Pointeurs
cemoi
-
cemoi -
cemoi -
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:
et le 2nd:
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
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