54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
| #include<stdio.h>
 | |
| #include<sys/mman.h>
 | |
| #include<sys/stat.h>
 | |
| #include<fcntl.h>
 | |
| #include<unistd.h>
 | |
| 
 | |
| int main() {
 | |
|     const char *name = "/my_shared_memory";
 | |
|     int shm_fd = shm_open(name, O_CREAT | O_RDWR, 0666);
 | |
|     if (shm_fd == -1) {
 | |
|         perror("shm_open");
 | |
|         return 1;
 | |
|     }
 | |
| 
 | |
|     // Set the size of the shared memory region
 | |
|     size_t size = 1024;
 | |
| 
 | |
|     // Resize the shared memory object to the desired size
 | |
|     if (ftruncate(shm_fd, size) == -1) {
 | |
|         perror("ftruncate");
 | |
|         return 1;
 | |
|     }
 | |
| 
 | |
|     // Map the shared memory object into the process address space
 | |
|     void *ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
 | |
|     if (ptr == MAP_FAILED) {
 | |
|         perror("mmap");
 | |
|         return 1;
 | |
|     }
 | |
| 
 | |
|     // Write data to the shared memory
 | |
|     sprintf(ptr, "Hello, shared memory!");
 | |
| 
 | |
|     // Unmap the shared memory object
 | |
|     if (munmap(ptr, size) == -1) {
 | |
|         perror("munmap");
 | |
|         return 1;
 | |
|     }
 | |
| 
 | |
|     // Close the shared memory file descriptor
 | |
|     if (close(shm_fd) == -1) {
 | |
|         perror("close");
 | |
|         return 1;
 | |
|     }
 | |
| 
 | |
|     // Unlink the shared memory object
 | |
|     if (shm_unlink(name) == -1) {
 | |
|         perror("shm_unlink");
 | |
|         return 1;
 | |
|     }
 | |
| 
 | |
|     return 0;
 | |
| }
 |