Estoy intentando escribir un programa en el que los procesos secundarios se comunican entre sí en Linux.¿Cómo se puede mantener un int y una matriz en la memoria compartida en C?
Todos estos procesos se crean a partir del mismo programa y, como tal, comparten el código.
Necesito que tengan acceso a dos variables enteras, así como a una matriz entera.
No tengo idea de cómo funciona la memoria compartida y cada recurso que he buscado no ha hecho más que confundirme.
¡Cualquier ayuda sería muy apreciada!
Editar: Aquí hay un ejemplo de código que he escrito hasta ahora solo para compartir un int pero probablemente sea incorrecto.
int segmentId;
int sharedInt;
const int shareSize = sizeof(int);
/* Allocate shared memory segment */
segmentId = shmget(IPC_PRIVATE, shareSize, S_IRUSR | S_IWUSR);
/* attach the shared memory segment */
sharedInt = (int) shmat(segmentId, NULL, 0);
/* Rest of code will go here */
/* detach shared memory segment */
shmdt(sharedInt);
/* remove shared memory segment */
shmctl(segmentId, IPC_RMID, NULL);
Qué sistema operativo? –
Mi error. Esto está en Linux – Josh
Tenga en cuenta esta pregunta de ayer: http://stackoverflow.com/questions/1664519/creating-accessing-shared-memory-in-c (el mismo tema general, aunque ha seleccionado Sys V IPC). –