Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Create shared memory block
- void* sharedMemory = NULL;
- size_t shmemSize = 123456;
- const char* shmName = "mySharedMemPath";
- int shFD = shm_open(shmName, (O_CREAT | O_EXCL | O_RDWR), 0600);
- if (shFD >= 0) {
- if (ftruncate(shFD, shmemSize) == 0) {
- sharedMemory = mmap(NULL, shmemSize, (PROT_READ | PROT_WRITE), MAP_SHARED, shFD, 0);
- if (sharedMemory != MAP_FAILED) {
- // Initialize shared memory if needed
- // Send 'shmemSize' & 'shmemSize' to other process(es)
- } else handle error
- } else handle error
- close(shFD); // Note: sharedMemory still valid until munmap() called
- } else handle error
- ...
- Do stuff with shared memory
- ...
- // Tear down shared memory
- if (sharedMemory != NULL) munmap(sharedMemory, shmemSize);
- if (shFD >= 0) shm_unlink(shmName);
- // Get the shared memory block from another process
- void* sharedMemory = NULL;
- size_t shmemSize = 123456; // Or fetched via some other form of IPC
- const char* shmName = "mySharedMemPath";// Or fetched via some other form of IPC
- int shFD = shm_open(shmName, (O_RDONLY), 0600); // Can be R/W if you want
- if (shFD >= 0) {
- data = mmap(NULL, shmemSize, PROT_READ, MAP_SHARED, shFD, 0);
- if (data != MAP_FAILED) {
- // Check shared memory for validity
- } else handle error
- close(shFD); // Note: sharedMemory still valid until munmap() called
- } else handle error
- ...
- Do stuff with shared memory
- ...
- // Tear down shared memory
- if (sharedMemory != NULL) munmap(sharedMemory, shmemSize);
- // Only the creator should shm_unlink()
Add Comment
Please, Sign In to add comment