Próbuję napisać program, w którym procesy potomne komunikują się ze sobą w systemie Linux.Jak zachować int i tablicę we wspólnej pamięci w C?
Wszystkie te procesy są tworzone z tego samego programu i jako takie udostępniają kod.
Potrzebuję ich do uzyskania dostępu do dwóch zmiennych liczb całkowitych oraz tablicy liczb całkowitych.
Nie mam pojęcia, jak działa pamięć współdzielona i każdy zasób, którego szukałem, nie zrobił nic, tylko wprowadził mnie w błąd.
Każda pomoc będzie bardzo ceniona!
Edytuj: Oto przykład kodu, który napisałem do tej pory, aby udostępnić jedną int, ale prawdopodobnie jest błędna.
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);
Który system operacyjny? –
Mój błąd. To jest na Linuksie – Josh
Zauważ to pytanie od wczoraj: http://stackoverflow.com/questions/1664519/creating-accessing-shared-memory-in-c (ten sam ogólny temat, chociaż wybrałeś Sys V IPC). –