转载:linux - shm_open()不会创建共享内存段ipcs - IT工具网
我得到了成功执行的以下C代码:
...
fd = shm_open(memory_package_name, O_CREAT | O_RDWR | O_EXCL , S_IRUSR | S_IWUSR);
if (fd == -1) { //will fail if file already exists because of flag O_EXCL
printf("\n shm_open() failed with error [%s]\n",strerror(errno));
exit(EXIT_FAILURE);
} else {
printf("shm_open success\n");
}
...
使用ls -l /dev/shm
可以看到正确创建了name memory_package_name
的文件,但当使用ipcs
时,它不会显示任何共享内存段:
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
为什么?
最佳答案
你试过用shmget()
和shmat()
吗??
不管怎样,如果您需要在两个不相关的进程之间共享内存,您确实需要shm_open()
,但我认为您的情况中缺少的一点是使用shmat()
连接到该内存区域的调用。
关于linux - shm_open()不会创建共享内存段ipcs,我们在Stack Overflow上找到一个类似的问题: linux - shm_open() doesn't create shared memory segment ipcs - Stack Overflow