我正試圖將信息從子進程傳遞給此程序中的父進程。下面的代碼,到目前爲止,在清除它仍在工作:嘗試彙總文件並通過管道/叉/進程傳輸時出錯?
#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。
我可能會錯過什麼?我的感官告訴我一些與閱讀的東西。
編輯:我要補充一點,我的目的是讓子進程來打開和讀取文件(其中包含數字的多線),並把它們加起來,總回父進程。
謝謝你的迴應。我會看看,看看這是我的問題。 –