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?