私はユーザー入力を受け入れ(50の価格)、最初の子はそれを2番目に渡し、2番目のものは10(価格は今60)、もう1番目のものを渡すプログラムを作成しようとしています50(価格は現在110)、4人が最終価格を印刷/返品するだけです。私はループでフォークを持っていますが、パイプを作っていますが、価格は常に同じです。各子に10が追加されます。何が間違っているか、それを修正する方法は、私がしたいように動作するようになる。C計算のための無名パイプとフォーク
マイコード:
int main(int argc,char *argv[])
{
int anon_pipe[2];
int n,N=4;
char value_price[100];
if(argc>1)
{
int price=atoi(argv[1]);
printf("%d\n",price);
if(pipe(anon_pipe)==-1){
perror("Error opening pipe");
return -1;
}
for(n = 0; n < N; n++){
switch(fork()){
case -1:
perror("Problem calling fork");
return -1;
case 0:
close(anon_pipe[1]);
read(anon_pipe[0],value_price,100);
price+=10;
sprintf(value_price,"%d \n",price);
printf("Price: %d\n",atoi(value_price));
write(anon_pipe[1],value_price,sizeof(value_price));
_exit(0);
}
}
close(anon_pipe[0]);
sleep(1);
close(anon_pipe[1]);
}
return 0;
}
[documentation](http:// stackoverflow。配管を介した子から子へのデータ転送を設定するための、com/documentation/posix/8082/pipes/26063/connecting-two-child-processes-via-a-pipe#t = 201612081850028838105) –