【问题标题】:Running ulimit -d using system() function使用 system() 函数运行 ulimit -d
【发布时间】:2016-11-23 01:30:15
【问题描述】:

当我尝试使用以下两行执行 c 代码时,ulimit 仍然显示为无限制,但我希望答案为 1024。

system("ulimit -d 1024"); system("ulimit -d");

【问题讨论】:

  • 那是因为system(..) 创建了一个新的子shell 而ulimit 只影响那个子shell。当从system(...) 返回时破坏外壳时,它会丢失。无论您要做什么,您都应该:1) 封装在 shell 脚本中 2) 寻找能够为您提供此功能的 API用于当前进程
  • 您可以通过修改 etc/security/limits.conf... 在每个系统的基础上设置这些限制...不过,尚不清楚这是否会对您的问题有所帮助。

标签: c linux ulimit


【解决方案1】:

如果要设置调用进程的ulimit,请使用setrlimit(2),与argumentmnt RLIMIT_DATA

system()会fork,ulimit命令只影响子进程,不影响调用进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多