Ich muss den größten Wert in einem Array von 1000 Zahlen mit 10 untergeordneten Prozessen finden (so dass jeder von ihnen nur hundert Werte überprüft), und der Elternteil muss nur die Daten sammeln. Ich bin schon fertig mit der ganzen Sache, aber ich bin beim Lesen der Werte fest.Forked 10 untergeordnete Prozesse, wie kann der Elternprozess ihre Rückgabewerte sammeln?
Hier ist der Code:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int array[1000];
int i, j;
int pids[10];
int searchminindex;
int searchmaxindex;
int maxindex;
srand(time(NULL));
//fill up array with random numbers
for(i = 0; i < 1000; i++)
{
tomb[i] = random() % 5000;
}
//create 10 child processes
for (i = 0; i < 10; i++) {
if ((pids[i] = fork()) < 0) {
perror("fork");
abort();
}
else if (pids[i] == 0) {
searchminindex = i * 100;
searchmaxindex = (i+1) * 100;
//finding the biggest value
maxindex = searchminindex;
for(j = searchminindex+1; j < maxindex; j++) {
if(array[maxindex] < array[j])
maxindex = j;
}
}
}
for(i = 0; i < 10; i++){
//here's where I'd read the return values of the subarrays
}
return 0;
}
Ich habe versucht, mit Rohren und auch WEXITSTATUS, aber ich bin wirklich verwirrt und weiß nicht, wo, wie, dass ein Ende des Rohres und Dinge zu schließen, und mit WEXITSTATUS bin ich komplett verloren.
Wie können Sie helfen?
Multi t Überschrift wäre eine bessere Option –
Sind Sie gegen die Verwendung von Threads dafür? Es würde die Dinge ein wenig leichter machen. –
Könnten Sie ein globales Array pidsresults [10] hinzufügen und dann jedes pids sein Ergebnis in einen eigenen Index setzen? – zipzit