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 2019年7月29日

#20 in Unix API

Download history 43888/week @ 2024-04-02 43661/week @ 2024-04-09 45224/week @ 2024-04-16 43179/week @ 2024-04-23 43565/week @ 2024-04-30 40381/week @ 2024-05-07 41302/week @ 2024-05-14 39641/week @ 2024-05-21 39521/week @ 2024-05-28 41209/week @ 2024-06-04 42271/week @ 2024-06-11 40122/week @ 2024-06-18 41983/week @ 2024-06-25 44008/week @ 2024-07-02 48470/week @ 2024-07-09 39833/week @ 2024-07-16

183,020 每月下载量
用于 167 个 crate (50 直接使用)

MIT 许可证

175KB
5K SLoC

rlimit

Latest Version Documentation License Downloads

资源限制。

文档: https://docs.rs/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

依赖项