Je veux faire ce qui suit :
Le processus parent crée un processus enfant. Ensuite, le processus enfant lit n int de l'utilisateur et les stocke dans une mémoire partagée. Le processus parent les affiche ensuite.
Je suis parvenu à ce qui suit :
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#define SHMSIZE 27
int main() {
int shmid;
int *shm;
int *n;
if(fork() == 0) {
shmid = shmget(2009, SHMSIZE, 0);
shm = shmat(shmid, 0, 0);
n = shm;
int i;
for(i=0; i<5; i++) {
printf("Enter number<%i>: ", i);
scanf("%d", n++);
}
printf ("Child wrote <%d>\n",shm);
shmdt(shm);
}
else {
wait();
int *s;
shmid = shmget(2009, SHMSIZE, 0666 | IPC_CREAT);
shm = shmat(shmid, 0, 0);
s = shm;
wait(NULL);
printf ("Parent reads <%d>\n",shm) ;
shmdt(shm);
shmctl(shmid, IPC_RMID, NULL);
}
return 0;
}
Et la sortie est juste cette ligne :
Enter number<1>:
Et si je saisis un nombre, disons 25, ça donne ça :
Parent reads <r>
r : le nombre aléatoire -ve change à chaque fois que j'exécute le code
Il n'est jamais passé par le code du processus enfant ! Est-ce que je m'y prends mal ?