如果不退出,我不想创建新的共享内存对象。而是在这种情况下返回错误。我想只有在已经存在的情况下才打开。
答案 0 :(得分:4)
阅读shm_overview(7)& shm_open(3)
如果shm_open
没有 O_CREAT
标志,如果名称不存在则会失败,如open(2)那样。如果给出O_CREAT
和 O_EXCL
,则如果名称存在,它也将失败。在shm_open(3)中可以说失败可能发生在:
ENOENT 尝试shm_open()一个不存在的名称, 并且没有指定O_CREAT。
EEXIST O_CREAT和O_EXCL都被指定为shm_open()和 由name指定的共享内存对象已存在。
在某些Linux系统上,您可以使用/dev/shm/
来了解当前的POSIX共享内存段。