Witam.
Piszę program odczytujący z pliku liczby parzyste i nieparzyste. Po wywołaniu funkcji fork() proces macierzysty liczy sumę liczb parzystych a proces potomny sumę liczb nieparzystych.
Niestety problem leży w funkcji "read" wydaje mi się, że błednie odczytuje znak po znaku..
Siedze nad tym dłuższy czas i nie mogę sobie poradzić.
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
int main() {
int fd;
int pid;
int bytes_parzysta;
int bytes_nieparzysta;
char liczba_parzysta;
char liczba_nieparzysta;
int suma_parzysta;
int suma_nieparzysta;
if( (fd = open("plik.txt", O_RDONLY)) == -1) {
perror("open");
exit(1);
}
if( (pid = fork()) == -1) {
perror("fork");
exit(1);
} else if( pid > 0) {
do {
if( (bytes_parzysta = read(fd, &liczba_parzysta, 1)) == -1) {
perror("read");
exit(1);
}
if(liczba_parzysta == '\0')
break;
if(liczba_parzysta % 2 == 0)
suma_parzysta += liczba_parzysta;
} while(bytes_parzysta != 0);
printf("Suma liczb parzystych w pliku: %d\n", suma_parzysta);
} else if( pid == 0) {
do {
if( (bytes_nieparzysta = read(fd, &liczba_nieparzysta, 1)) == -1) {
perror("read");
exit(1);
}
if(liczba_nieparzysta == '\0')
break;
if(liczba_nieparzysta % 2 != 0)
suma_nieparzysta += liczba_nieparzysta;
} while(bytes_nieparzysta != 0);
printf("Suma liczb nieparzystych w pliku: %d\n", suma_nieparzysta);
}
return 0;
}
plik.txt w formacie
1234532214