4

パイプを使用して、子プロセスとその親の間の通信を実装したいと考えています。コードは次のとおりです。

#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 で待機し続けます。なにが問題ですか?

4

1 に答える 1