Linux C 仅对我的程序禁止核心转储

Posted

技术标签:

【中文标题】Linux C 仅对我的程序禁止核心转储【英文标题】:Linux C forbid coredumps only for my program 【发布时间】:2020-05-15 19:51:12 【问题描述】:

是否可以只为我的程序禁止创建核心转储?我知道可以使用ulimit 更改整个系统的行为,但我只想为我的程序阻止它。我应该在我的程序中编码什么?也许写一些内核模块?

【问题讨论】:

我看不出这样做的意义。是否允许核心转储是一个策略问题,应该由运行程序的用户和/或系统管理员决定。程序通常不应该尝试将这些事情掌握在自己手中。 在遵循@JohnBollinger 的评论后,可以创建一个无转储用户(或组),将该二进制文件归该用户所有,并在其上设置 SUID 位,以便程序按上述方式运行用户,并在 limits.conf 中限制该用户的核心转储。这样它就可以由系统管理员配置。 【参考方案1】:

调用setrlimit() 执行与ulimit 命令相同的操作。

#include <sys/resource.h>

struct rlimit new;
new.rlim_cur = new.rlim_max = 0;
setrlimit(RLIMIT_CORE, &new);

【讨论】:

以上是关于Linux C 仅对我的程序禁止核心转储的主要内容,如果未能解决你的问题,请参考以下文章

比较 2 个 GDB 核心转储

为啥我的程序的核心转储在安装在 Linux 中的 NTFS 分区上运行时总是零字节?

什么组件实际上转储核心?

如何使 .NET Web Api 仅对我的应用程序私有

为啥在编译我的代码C(linux)时出现分段错误(核心转储)[关闭]

分段错误(核心转储)错误 C linux 套接字