Ben enigzins een C beginneling, maar uit onderstaande kom ik net echt uit. Wat ik wil is een programma maken met twee threads die communiceren via shared memory. Leek me niet echt moeilijk, maar ik krijg het niet voor elkaar dat beide threads toegang kunnen krijgen tot het geheugensegment.
Wat ik doe is het volgende, in de main() methode maak ik een segment aan:
Vervolgens heb ik twee verschillende processen waarin het volgende gedaan wordt:
Lijkt mij super basic, maar blijkbaar doe ik iets fout. Als ik namelijk check naar welk adres shared_memory verwijst krijg ik voor het ene (als eerste uitgevoerde) proces: 0x40973000 (goed) en de ander krijgt 0xffffffff (fout).
Welke (ongetwijfeld beginners) fout bega ik?
Wat ik doe is het volgende, in de main() methode maak ik een segment aan:
C:
1
2
3
4
5
| // shared memory shn_key = IPC_PRIVATE; /* Allocate a shared memory 1MB segment. */ segment_id = shmget (shn_key, getpagesize()*256, 0644 | IPC_CREAT); |
Vervolgens heb ik twee verschillende processen waarin het volgende gedaan wordt:
C:
1
2
3
| char* shared_memory; // Attach the shared memory segment. shared_memory = (char*) shmat (segment_id, (void *)0, 0); |
Lijkt mij super basic, maar blijkbaar doe ik iets fout. Als ik namelijk check naar welk adres shared_memory verwijst krijg ik voor het ene (als eerste uitgevoerde) proces: 0x40973000 (goed) en de ander krijgt 0xffffffff (fout).
Welke (ongetwijfeld beginners) fout bega ik?