我看到人们交替使用术语ulimi
t & rlimit
,我可以说他们指的是同一件事吗?
答案1
我认为这种混乱来自于 ulimit 包装的底层系统调用被称为设置限制。
ulimit() 函数应控制进程限制。该函数可以控制的进程限制包括可以写入的单个文件的最大大小(这相当于将 setrlimit() 与 RLIMIT_FSIZE 一起使用)。
此外,如果您查看setrlimit
手册页,则包含限制信息的基础数据结构称为rlimit
。
getrlimit 和 setrlimit 分别获取和设置资源限制。每个资源都有一个关联的软限制和硬限制,由 rlimit 结构( getrlimit() 和 setrlimit() 的 rlim 参数)定义:
struct rlimit { rlim_t rlim_cur; /* Soft limit */ rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur) */ };
参考
答案2
参考ulimit 手册页,它是一个 bash shell 命令,用于控制系统的 rlimits 和一部分bash 内置函数如 printf、read、source 等。
参考获取限制页面,它表示通过 C/C++ 使用系统调用来控制系统 rlimits 的 API。额外的glibc 文档on 更好地解释了 rlimits(= 资源限制)。
答案3
ulimit
可以是两件事:
POSIX 7 C API 接口已被弃用,取而代之的是
getrlimit()
:http://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html应用程序应使用 getrlimit() 或 setrlimit() 函数,而不是过时的 ulimit() 函数。
sim
在 POSIX 6 上回答时情况并非如此。在GNU/Linux上,
getrlimit()
和ulimit()
都是通过sys_getrlimit
系统调用来实现的。没有sys_ulimit
。未弃用的 POSIX 7 CLI 实用程序:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ulimit.html
它可以通过 或 来
ulimit()
实现getrlimit()
。