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 仅对我的程序禁止核心转储的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的程序的核心转储在安装在 Linux 中的 NTFS 分区上运行时总是零字节?