パイプを使用して、子プロセスとその親の間の通信を実装したいと考えています。コードは次のとおりです。
#include <stdio.h>
int main() {
int pipe_dsc[2];
if (pipe(pipe_dsc) == -1) {
printf("error\n");
}
switch (fork()) {
case -1:
printf("error\n");
return 0;
case 0: //children
close(0);
dup(pipe_dsc[0]);
close(pipe_dsc[1]);
int x;
scanf("%d", &x);
printf("succes: %d\n", x);
return 0;
default: //parent
close(1);
dup(pipe_dsc[1]);
close(pipe_dsc[0]);
printf("127");
wait(0);
return 0;
}
return 0;
}
親は数字の 127 を書き、子供はそれを読むべきですが、そうではありません。子は scanf で待機し続けます。なにが問題ですか?