J'ai essayé de créer un bloc de mémoire partagée, et ce que j'ai obtenu est un comportement étrange.problème avec la mémoire partagée
#include <sys/shm.h>
#include "stdio.h"
#include <sys/ipc.h>
int main() {
printf("starting\n");
int mid = -1;
mid = shmget((key_t)1234, 4096, IPC_CREAT|0666);
if(mid == -1) {
printf("cant get mid\n");
return 1;
} else {
printf("got mid");
}
int* maddr = 0;
maddr = shmat(mid, NULL ,0);
if(maddr == (int*)-1) {
printf("cant attach memory\n");
return 1;
} else {
printf("got maddr");
}
while(1) {
int cval = __sync_add_and_fetch(maddr, 1);
if(cval % 2) { // odd values
printf("messager 1");
sleep(1000);
}
}
}
Si je tente d'exécuter ce code, il imprime à partir et se bloque, rien de plus arrive, mais certains pourquoi il accepte l'entrée de stdin, donc je peux imprimer comme si scanf est en cours d'exécution