gpt4 book ai didi

c - 在管道中传递来自进程的整数数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:47:10 25 4
gpt4 key购买 nike

我要用 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);
}

当我评论我的代码时,当我将数组从管道读取到 readArr 时,它没有正确打印。

最佳答案

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

关于c - 在管道中传递来自进程的整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56198367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com