linux - 更改现有共享内存段大小

标签 linux shared-memory

我有一些遗留代码使用 shmget/shmat/shmdt 来创建、附加和管理共享内存段。

带有代码的应用程序有时会崩溃,将片段留在内存中。代码重新使用相同的段 key 重新连接到它们,但问题是它每次都使用不同的共享内存大小,因此无法连接。

我的问题是:

1) 是否可以在连接时更改共享内存大小?

2) 如果不是,我如何连接到共享内存段(即使我可能不知道大小),以便删除它(以便以后重新创建一个新的)?

谢谢!

最佳答案

您可以使用 shmctl删除并创建您自己的尺寸之一。我假设遗留代码在无法 shmget 时会尝试使用现有的共享内存?

关于linux - 更改现有共享内存段大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261582/

相关文章:

Java执行linux脚本

php - UTF-8贯穿始终

c++ - LD搜索共享库两次,并忽略加载的实例

c - 这两个命令行有什么区别? (段错误)

c++ - 是否可以与另一个进程共享现有的 RAM block ?

c - Linux 将虚拟内存范围映射到现有的虚拟内存范围?

linux - 在 SQL Developer 中生成以毫秒为单位的总时间

c - tid状态变化时获取信号

c++ - Linux 共享内存与 C++ : Segmentation Fault

c++ - 如何从 boost::interprocess::managed_shared_memory 对象获取 shmid