-
problème avec shmat
bonjour tout le monde,
voilà je doit travailler avec les segments de mémoire partagés donc j'utilise shmget et shmat , le problème c'est que shmat renvoie l'erreur EACCES qui veut dire que le processus n'a pas le droit d'accès au segment , je ne sais pas pourquoi .
si quelqu'un a déja eu cette erreur ou sait comment faire qu'il me donne un coup de main .
PS: j'ai utilisé shmat(shmid,NULL,0) après avoir fait shmid=shmget(clef,sizeof(type),IPC_CREAT)
merci d'avance :D
-
je ne suis pas sur a 100%, mais essaie de specifier des droits dans le parametre shmflg
shmid=shmget(clef,sizeof(type),IPC_CREAT | 0666)
0666 = lire et ecrire pour tous
-
voici un code que j'utilise en ce moment et qui fonctionne (c'est garanti) :
// Create the shared memory object
ShmId = shmget(80, sizeof(tData), IPC_CREAT|IPC_EXCL|0777);
if(ShmId == -1)
{
//printf("Error on shmget errno = %d\n", errno);
MyOutputDebugString("Error on shmget :");
MyOutputDebugString(strerror(errno));
MyOutputDebugString("\n");
printf("error shmget : %s \n", strerror(errno));
exit(0);
}
printf("shmget OK\n");
// attach an address to the data structure
MyStruct = (tData *)shmat(ShmId, NULL, 0);
printf("MyStruct = %X\n", MyStruct);
strcpy(MyStruct->Title, "titre");
Ca revient a ce qui t'a été conseillé precedemment.
Sylvain