Ich versuche, Informationen aus dem Kindprozess an den übergeordneten Prozess in diesem Programm zu übergeben. Hier ist der Code so weit, noch auf der Arbeit es Reinigung:Fehler beim Versuch, eine Datei zu summieren und über Pipe/Fork/Process zu übertragen?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
main() {
char *s, buf[1024];
int fds[2];
int sum;
s = "Hello world!\n";
FILE *file;
pipe(fds);
if(fork()==0){
printf("child process: \n");
int c;
int number;
sum = 0;
file = fopen("file1.dat", "r");
if (file) {
while ((c = getc(file)) != EOF){
sum+=c;
printf("child process: step 1");
fclose(file);
}
}
write(fds[1],&sum,12);
exit(0);
}
read(fds[0],buf,12);
write(1,buf,strlen(s));
}
Es kompiliert korrekt und ohne Fehler, aber kehrt die Nummer 6, gefolgt von einer Reihe von nicht erkannten Zeichen (Fragezeichen), wenn ich es laufen.
Was könnte ich vermissen? Meine Sinne sagen mir etwas mit dem Lesen.
Edit: Ich sollte hinzufügen, dass meine Absicht für den Kindprozess ist zu öffnen und lesen Sie die Datei (die mehrere Zeilen von Zahlen enthält) und addieren sie, und geben Sie die Summe an den übergeordneten Prozess zurück.
Vielen Dank für die Antwort. Ich werde einen Blick darauf werfen und sehen, ob das mein Problem ist. –