Bonjour à tous,
Voici mon problème, je suis en train de m'exercer sur les mémoire partagées en C. Je souhaite partagée la mémoire entre un processus père et son fils. Dans mon code qui suit je parvient à partager correctement une zone de mémoire entre les deux processus. Par contre je voudrais maintenant partager un tableau de structures qui serait déclarer dans mon pere et qui serait accessible par le fils. Mais je ne vois vraiment pas comment je peux passer en argument ce tableau pour qu'il soit partager. Par exemple ou elevators tab[] serait un tableau de structures elevators correctement initialisé.
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #define KEY 0x00012347 int main(void){ int *zone; int memid; /* création ou lien avec une zone partagée */ memid = shmget(KEY, 100, 0700 | IPC_CREAT); if (memid == -1) { perror("shmget"); return (EXIT_FAILURE); } /* montage en mémoire */ zone = shmat(memid, NULL, 0); /* utilisation */ zone[0]=34; printf("zone[0] = %d\n", zone[0]++ ); pid_t pid; pid = fork(); if (pid<0){ printf("fork failed\n"); return; } if (pid==0){ printf("zone[0] = %d\n", zone[0]++ ); return (EXIT_SUCCESS); } }
Partager