J'ai un petit problème qui m'embête depuis quelques jours ^^
Voici la situation :
J'ai un programme A qui appelle fork (), le père attend le fils (normal) et dans le fils, je charge dynamiquement une bibliothèque (par exemple libfoo.so) qui va appeler à son tour des fonctions se trouvant dans la bibliothèque libsystem.so, dans un ordre que je ne maitrise pas i.e ce n'est pas moi qui a codé ce qu'il y a dans libfoo.so
Dans libsystem.so, j'ai une variable board déclarée en dehors de toute fonction (oui, variable globale) et déclarée static (si je ne me trompe pas, cela veut bien dire qu'elle gardera sa valeur jusqu'à la fin du programme ?) : static TILE board[16][16]. Les fonctions appelées à partir de libfoo.so (qui sont dans libsystem.so) vont modifier cette variable board, jusque là aucun souci.
Aucun souci non plus à la compilation, le code du programme A est compilé avec la bibliothèque libsystem.so, et tout fonctionne bien.
Maintenant le souci : pour terminer de façon brutale le fils (c'est pour éviter de tricher, un appel à une fonction à partir de libfoo.so termine son tour et le programme A reprend la main ensuite pour le tour de l'autre joueur) j'utilise "exit 0", mais je me rends compte que les modifications faites ne sont pas prises en compte, le board n'a pas changé lorsque je reviens dans le programme A

Lorsque j'enlève le "exit 0" tout marche bien, mais du coup libfoo.so peut tricher : faire semblant de terminer son tour, jouer à la place de l'autre puis reprendre la main et c'est pas terrible
Quelqu'un a t-il donc une idée ? ou une meilleure façon pour éviter cela ? Il faut éviter que "l'intermédiaire" libfoo.so ait accès à des données "système"...
Merci

EDIT : hm, en fait je viens de voir que fork crée un nouveau process, c'est donc logique que la variable board n'est pas modifiée puisque c'est 2 process différents. Je vais me renseigner sur la communication inter-process ...