C 在管道内从进程传递整数数组

C 在管道内从进程传递整数数组,c,process,pipe,fork,C,Process,Pipe,Fork,我要解决C中的一个问题。我有两个过程,P1和P2。 P1获取一个整数数组并将其发送给P2,P2必须只检查该数组中的素数,修改它并发送回P1,P1必须打印修改后的数组 例如: Int(myArr)={3,9,17,21,4,2,5}的数组 最终结果={3,0,17,0,0,2,5} 问题是,如何通过管道发送整数数组 //parent process if(p>0) { int i; int printArr[N]; close(fd1[0]); /

我要解决C中的一个问题。我有两个过程,P1和P2。 P1获取一个整数数组并将其发送给P2,P2必须只检查该数组中的素数,修改它并发送回P1,P1必须打印修改后的数组

例如: Int(myArr)={3,9,17,21,4,2,5}的数组 最终结果={3,0,17,0,0,2,5}

问题是,如何通过管道发送整数数组

 //parent process
  if(p>0)
   {
    int i;
    int printArr[N];

    close(fd1[0]);
   //myArr is an array of integers previously declared
    write(fd1[1],myArr,N);


    close(fd1[1]);


    wait(NULL);

    close(fd2[1]);
    read(fd2[0],printArr,N);

    printf("\nPrinting modified array: ");
    for(i=0; i<N; i++)
    {
        printf("\t%d",printArr[i]);
    }

    close(fd2[0]);


}

 //child process
 else if(p==0)
   {
    int i,k;
    close(fd1[1]);
    int readArr[N];

    read(fd1[0],readArr,N);

            //here's the problem, it doesn't print correct values
    printf("Array that comes from parent");
    for(i=0; i<N; i++)
    {
        printf("\n%d\n",readArr[i]);
    }


    for(i=0; i<N; i++)
    {
        k=checkprime(readArr[i]);
        if(k==1)
            readArr[i]=0;
    }

    close(fd1[0]);
    close(fd2[0]);

    write(fd2[1],readArr,sizeof(readArr)+1);
    close(fd2[1]);

    exit(0);
      }
//父进程
如果(p>0)
{
int i;
int printArr[N];
关闭(fd1[0]);
//myArr是以前声明的整数数组
写入(fd1[1],myArr,N);
关闭(fd1[1]);
等待(空);
关闭(fd2[1]);
读取(fd2[0],printArr,N);
printf(“\n打印修改的数组:”);
对于(i=0;i您的
read()
调用正在将
N
字节读入
N
int
s数组。使用
read(fd,buf,N*sizeof(int))
。看起来您还需要修复
write()

read()
call正在将
N
字节读入
N
int
s数组。使用
read(fd,buf,N*sizeof(int))
。看起来您还需要修复
write()