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

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

【问题讨论】:

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

标签: c++ c linux-kernel coredump systems-programming


【解决方案1】:

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

#include <sys/resource.h>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多