【问题标题】:Enforce resource limit on user session for a c program对 c 程序的用户会话实施资源限制
【发布时间】:2013-03-12 18:27:36
【问题描述】:

我有一个二进制文件。我想限制执行时该二进制文件可用的资源。

【问题讨论】:

  • 目前还不清楚您要达到的目标。但是malloc 将从堆中分配内存,而不是堆栈。如果您只想执行if 中的代码,为什么不简单地将代码更改为:if(1) { ... whatever ... }
  • 哦!但我也无权更改代码。有没有办法限制堆的使用?
  • 如果分配成功,您是否打算释放内存?你肯定想把地址放在一个变量中并用它做点什么吗?
  • 请看我只有上述代码的编译形式(带有调试选项)我无法更改代码。我正在研究 linux 顺便说一句
  • 您的意思是您希望if 条件失败?

标签: c shell malloc buffer


【解决方案1】:

我不确定我是否完全理解您想要什么,但您可以像这样设置malloc 的可用内存量:

    struct rlimit s;
    int ret = getrlimit(RLIMIT_DATA, &s);  // 0 on success
    s.rlim_cur = s.rlim_max;
    ret = setrlimit(RLIMIT_DATA, &s);

这将使进程拥有最大的数据内存。但是如果在这个过程中已经把最大值调低了,普通用户就不能再增加了。

【讨论】:

  • 我不能这样做,因为我之前说过我只有二进制文件。
【解决方案2】:

你可以简单地使用

 uname -v [内存KB] 

【讨论】:

    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 2011-12-05
    相关资源
    最近更新 更多