Я пытаюсь передать информацию из дочернего процесса в родительский процесс в этой программе. Вот код до сих пор, по-прежнему работает по очистке его:Ошибка при попытке суммирования файла и передачи через трубу/вилку/процесс?
#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));
}
Он компилирует правильно и без ошибок, но возвращается число 6 с последующим связкой непризнанных символов (вопросительных знаков), когда я запускаю его.
Что я могу пропустить? Мои чувства говорят мне что-то с прочитанным.
Редактировать: Я должен добавить, что мое намерение заключается в том, чтобы дочерний процесс открыл и прочитал файл (который содержит несколько строк чисел), и добавьте их, и верните итоговое значение в родительский процесс.
Благодарим за отзыв. Я посмотрю и посмотрю, это моя проблема. –