请举例说明
时间: 2024-02-28 20:55:02 浏览: 13
假设有两个进程 A 和 B,需要在它们之间共享一个整数变量 num,可以使用共享内存来实现。
1. 进程 A 创建共享内存区域并将 num 写入其中:
```c++
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int shm_fd = shm_open("/myshm", O_CREAT | O_RDWR, 0666);
ftruncate(shm_fd, sizeof(int));
int* num_ptr = (int*)mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
*num_ptr = 0;
// ...
}
```
2. 进程 B 打开共享内存区域并读取 num 的值:
```c++
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int shm_fd = shm_open("/myshm", O_RDWR, 0666);
int* num_ptr = (int*)mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
int num = *num_ptr;
// ...
}
```
注意,在实际使用中需要考虑数据同步和互斥访问的问题,例如进程 A 和 B 都需要对 num 进行修改,需要使用锁或者其他同步原语来保证数据的一致性和安全性。