bxs*_*shi 1 c linux shared-memory
我在程序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);
Run Code Online (Sandbox Code Playgroud)
我用它来存储哈希表.
另一个程序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