Bonjour a tous,
je rencontre un soucis récurrent sous FreeBSD et MacOS X, lors de l'utilisation de mémoire partage, avec les méthodes ftok(), shmget(), shmat() et shmdt(). En effet lors de la premiere execution, j'ai droit a un joli SEGFAULT et lors de la deuxieme execution : "shmget: Permission denied" ( via perro() ).
Si quelqu'un a une idee sur la question ? merci d'avance !
===== CODE C =====
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <errno.h>
int main(int ac, char **av)
{
int shm_id;
key_t key;
char *str;
key = ftok(av[0], 'p');
if (key <= 0)
{
printf("KEY ERROR");
exit (-1);
}
printf("Key created : %d\n", key);
shm_id = shmget(key, 255, IPC_CREAT | SHM_W | SHM_R);
if (shm_id < 0)
{
perror("shmget");
exit (-1);
}
str = shmat(shm_id, NULL, 0);
if (str <= 0)
{
perror("shmat");
exit (-1);
}
sprintf(str, "%s", av[1]);
shmdt(str);
return (0);
}
____________________
Ma Quete n'est pas Terminee