gpt4 book ai didi

c++ - 如何测试是否删除了 boost 共享内存对象?

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

我在进程之间使用 boost::interprocess::shared_memory_object。

一个进程(服务器)创建一个共享内存对象,其他进程(客户端)打开该共享内存对象。但是,客户端进程如何确定该共享内存对象是否已被服务器进程删除?

As boost documentation states ,当请求删除共享内存时,它不会被删除,直到所有其他引用取消引用它。因此,即使服务器进程(试图)删除共享内存对象,该共享内存对象也不会被删除,因此其他客户端进程无法知道该共享内存对象是否被删除。

由于引用缓存,我需要这种删除检测。我的意思是,客户端进程存储对共享内存的引用,并在需要时重用它。但是,当服务器进程删除共享内存并使用相同名称重新创建共享内存时,我只希望我的客户端进程检测到此重新创建并更新对新创建的共享内存对象的引用。

最佳答案

命令

ipcs -m

将显示所有现有的共享内存段。通过 shmid 您应该能够识别您的段。还有 nattch 列显示附加到该段的进程数。

关于c++ - 如何测试是否删除了 boost 共享内存对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5799492/

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