Witam, mam problem z kompilacją programu w C. Nie wiem gdzie jest błąd (mimo iż pokazują mi się linijki, w którym takowy występuje) ... Czy jest ktoś kto mógłby mi pomóc w naprowadzeniu mnie do odnalezienia błędu? Z góry bardzo dziękuję.
Program pokazujący, ze zmienne programu w procesie rodzicielskim i potomnym maja te same wartości początkowe, ale są niezależne:
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int fatal(char *s) {
perror(s);
exit(1);
}
int printpos(const char *string, int filedes, char *buf) {
off_t pos;
if((pos = lseek(filedes, 0, SEEK_CUR)) == -1)
fatal("B£¡D: niepowodzenie lseek");
printf("%s:%ld:%s\n", string, pos, buf);
}
main() {
int fd; // deskryptor pliku
pid_t pid; // ID procesu
char buf[10]; // bufor dla danych pliku
if((fd = open("data", O_RDONLY)) == -1)
fatal("B£¡D: otwarcie pliku");
read(fd, buf, 10);
printpos("PRZED: fork()", fd, buf);
switch(pid = fork()) {
case -1: // b³±d
fatal("B£¡D: niepowodzenie w fork");
break;
case 0:
printpos("POTOMNY: przed read", fd, buf);
read(fd, buf, 10);
printpos("POTOMNY: po read", fd, buf);
break;
default:
wait((int *)0);
printpos("RODZICIELSKI: po wait", fd, buf);
}
}