首页 > 解决方案 > 为什么我不能输入 A 的值?

问题描述

我正在尝试编写一个程序,在其中使用 fork 创建 2 个子进程。第一个孩子从用户那里获得一个数字 A 并将其写入 p1 ,然后第二个孩子从用户那里获得数字 B 并将其写入 p2 ,然后父亲读取值 A 和 B 并打印它们的乘法结果。我试过这个,但它不起作用

#include <stdio.h>
#include <unistd.h>
#include <wait.h>

int main()
{
    int A,B,k,p1[2],p2[2];
    pipe(p1);
    pipe(p2);

    for(k=0;k<2;k++)
    {
        switch(fork())
        {
            case -1:
                break;
            case 0:
                if(k==0)
                {
                    printf("\n Enter value of A = ");
                    scanf("%d",&A);
                    close(p1[0]);
                    write(p1[1],&A,sizeof(int));
                    close(p1[1]);
                    break;
                }
                if(k==1)
                {

                    printf("\n Enter value of B = ");
                    scanf("%d",&B);
                    close(p2[0]);
                    write(p2[1],&B,sizeof(int));
                    close(p2[1]);
                    break;
                }
        }
    }

    read(p1[0],&A,sizeof(int)); 
    read(p2[0],&B,sizeof(int));
    printf("\n Multipliction = %d",A*B);
    close(p2[0]);
    close(p1[0]);
    printf("\n");

    return 0;
}

标签: cpipefork

解决方案


推荐阅读