pub unsafe fn prlimit64(
pid: pid_t,
resource: i32,
new_limit: Option<&rlimit64_t>,
old_limit: Option<&mut rlimit64_t>,
) -> Result<(), Errno>
Expand description
Get/set the resource limits of an arbitary process.
§Examples
let mut old_limit = nc::rlimit64_t::default();
let ret = unsafe { nc::prlimit64(nc::getpid(), nc::RLIMIT_NOFILE, None, Some(&mut old_limit)) };
assert!(ret.is_ok());
assert!(old_limit.rlim_cur > 0);
assert!(old_limit.rlim_max > 0);
Examples found in repository?
examples/resource_limit.rs (line 8)
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
fn get_file_limit() {
let pid = unsafe { nc::getpid() };
let mut res_limit = nc::rlimit64_t::default();
let ret = unsafe { nc::prlimit64(pid, nc::RLIMIT_NOFILE, None, Some(&mut res_limit)) };
assert!(ret.is_ok());
if ret.is_err() {
eprintln!("Failed to get file resource limitation!");
} else {
println!(
"Limit of open files, current: {}, max: {}",
res_limit.rlim_cur, res_limit.rlim_max
);
}
}
fn set_file_limit() {
let pid = unsafe { nc::getpid() };
let res_limit = nc::rlimit64_t {
rlim_cur: 512,
rlim_max: 1024,
};
let ret = unsafe { nc::prlimit64(pid, nc::RLIMIT_NOFILE, Some(&res_limit), None) };
if ret.is_err() {
eprintln!("Failed to update file resource limitation!");
} else {
println!(
"Update limit of open files, current: {}, max: {}",
res_limit.rlim_cur, res_limit.rlim_max
);
}
}