Ciao a tutti, ho un problema con la gestione di una variabile globale a più files. Ho dichiarato in un header la mia variabile di tipo int, in tutti i files che utilizzano questa variabile ho poi incluso il suddetto header. Il punto è che se uno qualunque dei files aggiorna la variabile, il valore non cambia negli altri. Vi faccio un esempio:
cond.h
codice:
 
extern int val;
cond.c
codice:
#include "cond.h"
int val = 0;
file1.c
codice:
#include "cond.h"
extern int val;

void foo(){
  val = 1; 
}
file2.c
codice:
#include "cond.h"
extern int val; 
void foo(){
 printf("%d", val); 
}
Eseguendo il programma con un makefile, avviando i due eseguibili, ottengo la stampa del valore 0, ovvero il valore non aggiornato della variabile.

L'esempio che ho scritto sopra è solo una generalizzazione del mio problema, che in realtà è quello del produttore consumatore. La variabile mi serve per sospendere o riattivare uno dei due processi.

Cosa sbaglio?