gpt4 book ai didi

c - 不同程序中的linux动态共享内存

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:57 25 4
gpt4 key购买 nike

我使用以下代码在程序 A 中创建一个共享内存:

shm = shm_open("/mfs_hash_pool_container", O_CREAT|O_RDWR, 0666);

size = sizeof(struct mfs_hash_pool_container);

ftruncate(shm, size);

mfs_hash_pool_stat_p = (struct mfs_hash_pool_container *)mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, shm, 0);

我用它来存储哈希表。

另一个程序B,会收到程序A发过来的addr(mfs_hash_pool_stat_p+offset),但是我不能写在B里。这是否意味着我也必须在 B 中打开此共享内存?还有其他方法可以解决吗?因为我自动创建了这段内存。

谢谢你们。

最佳答案

您不能只在其他程序中使用该地址。 B 必须:

  • 获取文件描述符:shm_open("/mfs_hash_pool_container", O_RDWR, 0)
  • 为文件描述符映射内存:mmap 就像 A 一样

注意事项:

  • 你需要检查mmap的返回值(它可能返回MAP_FAILED)
  • 你不需要转换mmap的返回值

关于c - 不同程序中的linux动态共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9409079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com