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
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.