Witam,
Chciałem napisać program realizujący zagadnienie producenta-konsumenta. Napisałem coś takiego:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

# define MAKS 10

int bufor[MAKS];
int we = 0, wy = 0;
int ile = 0;

void produkuj(){
    bufor[we] = rand()%100;
    printf("PROD: %d", bufor[we]);
    we++; ile++;
}

void konsumuj(){
    printf("KONS: %d", bufor[wy]);
    wy++;
}

int main(){
    srand(time(NULL));

    int pid;

    pid = fork();

    if (pid < 0){
        fprintf(stderr, "Aaaaa! fatal error!\n");
        exit(-1);
    }

    if (pid > 0) { //jestesmy w procesie macierzystym - powiedzmy w producencie
        while (1){
            if (ile == 100)
                break;
            while ((we+1) % MAKS == wy) ; //bufor jest pelny
            produkuj();
        }
        exit(0);
    }

    if (pid == 0) { //jesetesmy w procesie potomnym - konsumencie
        while (1){
            while (we == wy) ; //bufor jest pusty
            konsumuj();
        }
        exit(0);
    }

    return 0;
}

To jednak nie działa, bo jak się przekonałem proces potomny posiada kopię rejestrów procesu macierzystego, ale później zmienne we, wy, bufor, nie są już wspólne.

Czy ktoś mógłby poprawić mój kod tak, aby spełniał swoje zadanie?