Sto tentando di scrivere un programma in cui i processi figli comunicano tra loro su Linux.Come si mantiene un int e un array nella memoria condivisa in C?
Questi processi sono tutti creati dallo stesso programma e come tali condividono il codice.
Ho bisogno che abbiano accesso a due variabili integer e a un array intero.
Non ho idea di come funzioni la memoria condivisa e ogni risorsa che ho cercato non abbia fatto altro che confondermi.
Qualsiasi aiuto sarebbe molto apprezzato!
Modifica: Ecco un esempio di codice che ho scritto finora solo per condividere un int ma probabilmente è sbagliato.
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);
Quale sistema operativo? –
Il mio errore. Questo è su Linux – Josh
Nota questa domanda di ieri: http://stackoverflow.com/questions/1664519/creating-accessing-shared-memory-in-c (stesso argomento generale, sebbene sia stato selezionato Sys V IPC). –