Я должен решить проблему в C. У меня есть два процесса, P1 и P2.P1 принимает массив целых чисел и должен отправить его в P2, P2 должен проверить только простые числа в этом массиве, изменить его и отправить обратно в P1, P1 должен напечатать измененный массив.
Пример: массивof 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, он печатается неправильно.