在 Linux 中,有打开文件限制。我可以使用ulimit -n
查看打开文件限制,默认为 1024。然后我还可以通过查看 /proc/$PID/limits 来查看每个进程打开文件的软/硬限制。我看到软 = 1024 和硬 = 4096。
我想知道这两个输出之间有什么区别?
此外,这样做setRlimit()
,并getRlimit()
适用于全系统或每个进程?
der*_*ert 11
ulimit -n
默认设置软限制;您可以添加-H
查看/设置硬限制的选项。
在大多数情况下,软限制和硬限制的行为如下:
CAP_SYS_RESOURCE
)可以提高或降低对任何进程的任何限制。因此,硬限制可以作为软限制的上限(root 除外,他们通常可以做任何事情)。
有一个例外:软 CPU 限制发送SIGXCPU
信号。进程可能会选择忽略它,或者花时间进行清理等。一旦超过硬 CPU 限制,内核就会发送SIGKILL
——这是不可捕获、可处理或可忽略的。因此,在这种情况下,软限制用作警告“您的 CPU 时间已用完——完成并立即退出,否则!” 而硬限制是“否则”。
大多数是针对每个进程的,但也有一些(例如RLIMIT_NPROC
)是针对每个用户的。所述getrlimit(2)手册页指定每个限制。