Liebe/-r Experte/-in,
Für die Uni muss ich ein Programm schreiben, bei dem das Ergebnis einer Matrixmultiplikation berechnet wird. Dabei soll jede Ergebniszeile in einem eigenen Kindprozess berechnet werden, der dieses Ergebnis dann mittels einer Pipe an den Elternprozess übermittelt.
Mein Programm funktioniert soweit schon ganz gut. Die Ergebnisse werden berechnet und an den Elternprozess übermittelt. Nur bekommt der der Elternprozess scheinbar nur das erste der 5 Ergebnisse und gibt auch nur dieses aus. Da ich mich noch nicht lange mit diesem Thema auseinandersetze, fürchte ich, dass ich einen großen Denkfehler bei dieser Sache mache, deshalb hoffe ich auf diesem Wege auf den richtigen Denkanstoß.
Hier ist der abgespeckte Programmtext mit einigen Kommentaren in dem alles enthalten sein dürfte, was für etwaige Probleme verantwortlich sein könnte:
…
#define DIM_MATRIX 5
#define MAX_ZEICHEN 32
…
int main(){
int kind, status, fd[2], i=0, j=0;
float erg[DIM_MATRIX], res;
char zeile[MAX_ZEICHEN], buf[5];
float matrix1[5]={0, 1, 2, 3, 4};
float matrix2[5]={1, 0, 1, 2, 3};
float matrix3[5]={2, 1, 0, 1, 2};
float matrix4[5]={3, 2, 1, 0, 1};
float matrix5[5]={4, 3, 2, 1, 0};
float skal[5] = { 1.25, 0, 0, 0, 0.25 };
if( pipe(fd)