13 个不稳定版本 (5 个破坏性更新)
0.10.1 | 2023年7月19日 |
---|---|
0.9.1 | 2023年1月30日 |
0.9.0 | 2022年12月28日 |
0.8.3 | 2022年4月6日 |
0.3.0 |
|
#20 in Unix API
183,020 每月下载量
用于 167 个 crate (50 直接使用)
175KB
5K SLoC
rlimit
资源限制。
贡献
赞助
如果我的开源工作对您有帮助,请 赞助我。
每一份帮助都至关重要。谢谢!
lib.rs
:
rlimit - 资源限制。
设置资源限制
use rlimit::{setrlimit, Resource};
const DEFAULT_SOFT_LIMIT: u64 = 4 * 1024 * 1024;
const DEFAULT_HARD_LIMIT: u64 = 8 * 1024 * 1024;
assert!(Resource::FSIZE.set(DEFAULT_SOFT_LIMIT, DEFAULT_HARD_LIMIT).is_ok());
let soft = 16384;
let hard = soft * 2;
assert!(setrlimit(Resource::NOFILE, soft, hard).is_ok());
获取资源限制
use rlimit::{getrlimit, Resource};
assert!(Resource::NOFILE.get().is_ok());
assert_eq!(getrlimit(Resource::CPU).unwrap(), (rlimit::INFINITY, rlimit::INFINITY));
Windows
Windows 没有类 Unix 的资源限制。它只支持在 stdio 层面上更改当前允许同时打开的文件数。
请参阅 _getmaxstdio
和 _setmaxstdio
的官方文档。
println!("{}", rlimit::getmaxstdio()); // 512
rlimit::setmaxstdio(2048).unwrap();
println!("{}", rlimit::getmaxstdio()); // 2048
增加 NOFILE 限制
请参阅示例 nofile。
您还可以使用工具函数 rlimit::increase_nofile_limit
rlimit::increase_nofile_limit(10240).unwrap();
rlimit::increase_nofile_limit(u64::MAX).unwrap();
故障排除
在 macOS 上无法将 NOFILE 增加到硬限制
在 macOS 上,默认情况下 getrlimit 报告硬限制为无限,但通常可以通过 sysctl (kern.maxfilesperproc
) 发现更严格的硬限制。无法发现这个秘密的更严格的硬限制将导致 setrlimit 调用失败。
rlimit::increase_nofile_limit
尊重 kern.maxfilesperproc
。