我必须计算文件中字母的出现,每个字母都有自己的fork进程

时间:2018-01-31 10:10:56

标签: c fork

到目前为止,这是我的代码。它为每个字母打印出零。我有一个循环,为每个字母创建不同的fork子进程。然后我从循环到文件末尾的文件中取出字符,然后检查它是否是与ascii中的字母匹配的大小写。我真的被困住了,不知道从哪里开始。

    int main(int argc, char **argv){

char characters[26] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
            'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
int counter[26] = { 0 };
int n = 26;
char c;
if (argc < 2) 
return 1;
FILE *file = fopen(argv[1], "r");
pid_t pids[26];

for (int i = 0; i < n; i++){
    if ((pids[i] = fork()) < 0) {
        printf("Error");
        exit(1);
    } else if (pids[i] == 0) {
        c = fgetc(file);
        if (c == EOF) break;
        if (c == (i + 65) || c == (i + 97))
            counter[i]++;
        exit(0);
    } else {
        wait(NULL);


    }
}
for (int i = 0; i < n; ++i){
            printf("%c: %i\n", characters[i], cou nter[i]);
}
fclose(file);
return 0;

}

0 个答案:

没有答案