gpt4 book ai didi

linux - shm_open - 如何知道我是否打开了现有的共享内存

转载 作者:太空狗 更新时间:2023-10-29 12:15:27 24 4
gpt4 key购买 nike

我有两个问题:

  1. 在使用 shm_open 时,如何知道我是否打开了一个已经存在的共享内存,我正在使用 O_CREATE | O_RDWR。

  2. 我正在使用 shm_open 创建/打开一个具有某个名称的共享内存对象,并使用 mmap 将其映射到进程的虚拟地址空间。如果进程崩溃并且无法清理共享内存,它将一直保留到系统关闭。尽管这与 wiki 中提到的矛盾,它说,“由 shm_open 创建的共享内存是持久的。它会保留在系统中,直到被进程明确删除。这有一个缺点,如果进程崩溃并且无法清理共享内存,它将一直保留到系统关闭。到避免这个问题 mmap 可用于创建共享内存”。我说的是 shm_open 中提到的名称文件,它是在/dev/shm 中创建的,如果进程在没有清理共享内存(unmap 和 shm_unlink)的情况下崩溃,它仍然存在。我期望,如果任何进程都没有对共享内存的其他引用,并且崩溃的进程是唯一引用的进程,那么应该清理共享内存对象和文件。

最佳答案

我知道这个答案来晚了,但我正忙于同一主题。根据this shm_open manual使用 O_EXCL oflag 来检测共享内存对象是否已经存在。

关于linux - shm_open - 如何知道我是否打开了现有的共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26624617/

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