【问题标题】:how does perl invoke "ulimit -n"perl 如何调用“ulimit -n”
【发布时间】:2013-04-03 04:27:17
【问题描述】:
  1. ulimit -n 是一个内部 shell,perl 不能直接由 system`` 调用。那么当我想获取 ulimit 值时 perl 是如何处理的呢
  2. ulimit -nsh -c ulimit -n 是否具有不同的值。当我使用ulimit -n 时,该值为 1024,但当我使用 sh -c ulimit -n 时,该值是无限的。

【问题讨论】:

  • 您能发布您的问题所涉及的 perl 代码吗? Perl 没有ulimit 操作。
  • 使用 BSD::Resource;$rlimit = getrlimit("RLIMIT_OPEN_MAX");

标签: perl shell


【解决方案1】:

对于问题 #2,您需要引用命令:

sh -c 'ulimit -n'

你做的方式相当于:

sh -n -c ulimit

而没有选项的ulimit 等价于ulimit -f

【讨论】:

    【解决方案2】:

    程序不必使用ulimit 来获取打开文件描述符的最大数量——事实上,ulimit 必须从其他地方获取该值! Perl 函数 BSD::Resource::getrlimit 只是调用了一个名为 getrlimit 的 C 函数,并使用它直接从操作系统中检索值,与 ulimit 获取它的方式相同。

    【讨论】:

      【解决方案3】:

      在这里查看您的第一个问题:

      Set ulimit

      第二点,

      用作:

      sh -c 'ulimit -n'
      

      如果您查看手册页:

      如果存在 -c 选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给位置参数,从 $0 开始。

      【讨论】:

      • 非常感谢!第一个好像用BSD::Resource就可以解决。
      猜你喜欢
      • 1970-01-01
      • 2012-10-26
      • 2010-10-18
      • 2013-07-22
      • 2019-08-01
      • 1970-01-01
      • 2011-01-14
      • 2011-05-03
      • 1970-01-01
      相关资源
      最近更新 更多