tengo una estructura:¿Cómo modificar la memoria compartida (shmget/shmat) en C?
struct sdata {
int x;
int y;
time_t time;
};
creo memoria compartida para la estructura de la siguiente manera:
size_t shmsize = sizeof(struct sdata);
shmid = shmget(IPC_PRIVATE, shmsize, IPC_CREAT | 0666);
Entonces acceder a la memoria compartida como esto:
struct sdata *data = shmat(shared.shmid, (void *) 0, 0);
data->time = time(NULL); // function returns the current time
Mi pregunta es bastante simple. ¿Es esta la manera correcta de acceder/modificar la memoria compartida? ¿Es este el mejor enfoque?
(estoy usando System V semáforos para la sincronización y no han incluido ese código. Sólo quería asegurarse de que yo soy el acceso/modificación de la memoria compartida correctamente.)
Si el otro proceso es 'fork()' ed, entonces no hay problema con el IPC_PRIVATE siempre que la memoria compartida se cree antes de 'fork()'. La advertencia es válida en el caso más general, sin embargo. –