我想編寫一個程序來爲每個變量使用管道乘以兩個矩陣,但是我的代碼無法正常工作。使用管道將兩個矩陣相乘
它有什麼問題?
孩子和父母不一樣;既不是他們的列和行也不是他們的變量。
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int first[10][10], second[10][10], m[10][10];
int r1,r2,c1,c2;
struct mat
{
int i,j,r;
};
int writer(int fd[],struct mat l)
{
usleep(300000);
close(fd[0]);
int y;
for(y=0;y<c1;y++)
{
l.r+=first[l.i][y]*second[y][l.j];
}
write(fd[1], &l,sizeof(l));
printf("child [%d][%d] write %d \n " ,l.i,l.j, l.r);
}
void reader(int fd[])
{
struct mat p;
close(fd[1]);
read(fd[0],&p,sizeof(p));
printf(" Parent [%d][%d] reads %d \n ",p.i,p.j, p.r);
m[p.i][p.j]=p.r;
usleep(3000000);
}
main
功能是:
int main()
{
int a,b,j,i;
int fd[2];
pid_t cp;
pipe(fd);
\\read two matrices
for(i=0;i<r1;i++)
{
for(j=0;j<c2;j++)
{
cp=fork();
if(cp==0)
{
printf("k\n");
struct mat m;
m.r=0;
m.i=i;
m.j=j;
writer(fd,m);
}
if(cp!=0)
{
sleep(2);
reader(fd);
}
}
return 0;
sleep(100);
}
}