我有一个带有敏感内存的进程,永远不能写入磁盘。
我还要求我需要核心转储来满足客户的首次数据捕获要求。
使用mlock()锁定页面是否会阻止页面出现在核心转储中?
注意,这是一个嵌入式系统,我们实际上没有任何交换空间。
答案 0 :(得分:0)
取自man 2 madvise
:
madvise()系统调用建议内核如何处理 从地址addr和地址开始的地址范围内的分页输入/输出 大小长度字节。它允许应用程序告诉内核 它如何期望使用一些映射或共享内存区域,以便 内核可以选择适当的预读和缓存技术。 此调用不会影响应用程序的语义(除外 在MADV_DONTNEED的情况下,但可能会影响其性能。该 内核可以随意忽略这些建议。
特别检查选项MADV_DONTDUMP
:
从核心转储中排除addr指定范围内的那些页面 和长度。这在具有大面积的应用程序中很有用 已知的内存在核心转储中没有用处。的效果 MADV_DONTDUMP优先于通过设置的位掩码 / proc / PID / coredump_filter文件(见core(5))。