如果我做一个
lsof | grep user | wc -l
Run Code Online (Sandbox Code Playgroud)
我得到一个在 25,000 范围内返回的数字。
如果我检查
ulimit -a 用户
nofiles 设置为 1024。
有人可以帮助我更好地了解打开文件的数量设置吗?显然情况并非如此,但我认为 1024 的硬文件意味着用户不能打开超过 1024 个文件。
ulimit 返回的文件限制是单个进程可以打开的文件数量(ulimit -n 仅查看描述符数量)。返回的值是 RLIMIT_NOFILE(或 man getrlimit),如 man ulimit 中所述。这个小应用程序将输出相同的值(1024):
#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
int main(){
struct rlimit info;
getrlimit(RLIMIT_NOFILE, &info);
printf("%d\n", info.rlim_cur);
return 0;
}
Run Code Online (Sandbox Code Playgroud)