为什么不能输入A的值?

时间:2019-11-16 22:26:10

标签: c pipe fork

我正在尝试编写一个程序,在其中使用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;
}

0 个答案:

没有答案