mirror of
https://github.com/mii443/izoli.git
synced 2025-08-22 16:05:40 +00:00
testing UTS
This commit is contained in:
@ -12,4 +12,4 @@ name = "izoli"
|
|||||||
path = "src/bin/izoli.rs"
|
path = "src/bin/izoli.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
nix = { version = "0.29.0", features = ["sched"] }
|
nix = { version = "0.29.0", features = ["sched", "hostname"] }
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
|
use std::{ffi::CString, process::Command};
|
||||||
|
|
||||||
use izolilib::{
|
use izolilib::{
|
||||||
cgroup::{cgroup::CGroup, cgroup_option::CGroupOption, cpu_limit::CpuLimit},
|
cgroup::{cgroup::CGroup, cgroup_option::CGroupOption, cpu_limit::CpuLimit},
|
||||||
izolibox::IzoliBox,
|
izolibox::IzoliBox,
|
||||||
};
|
};
|
||||||
|
use nix::{
|
||||||
|
sys::wait::waitpid,
|
||||||
|
unistd::{execvp, sethostname},
|
||||||
|
};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let cgroup = CGroup::new("izoli").unwrap();
|
let cgroup = CGroup::new("izoli").unwrap();
|
||||||
@ -25,17 +31,34 @@ fn main() {
|
|||||||
1,
|
1,
|
||||||
Some(CGroupOption {
|
Some(CGroupOption {
|
||||||
cpu_max: Some(CpuLimit {
|
cpu_max: Some(CpuLimit {
|
||||||
max: izolilib::cgroup::limit_value::CGroupLimitValue::Value(1000),
|
max: izolilib::cgroup::limit_value::CGroupLimitValue::Max,
|
||||||
period: 100000,
|
period: 100000,
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
let pid = izolibox
|
let pid = izolibox
|
||||||
.enter(Box::new(|| {
|
.enter(Box::new(|| {
|
||||||
|
sethostname(format!("IzoliBox")).unwrap();
|
||||||
println!("Isolated process: {}", std::process::id());
|
println!("Isolated process: {}", std::process::id());
|
||||||
println!("cgroup: {:?}", CGroup::get_self_cgroup());
|
println!("cgroup: {:?}", CGroup::get_self_cgroup());
|
||||||
|
|
||||||
|
let cmd = CString::new("bash").unwrap();
|
||||||
|
let args = vec![
|
||||||
|
CString::new("containered bash").unwrap(),
|
||||||
|
CString::new("-l").unwrap(),
|
||||||
|
];
|
||||||
|
if let Err(e) = execvp(&cmd, &args.as_ref()) {
|
||||||
|
eprintln!("execvp failed: {:?}", e);
|
||||||
|
return 127;
|
||||||
|
}
|
||||||
|
|
||||||
127
|
127
|
||||||
}))
|
}))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
if let Ok(status) = waitpid(pid, None) {
|
||||||
|
println!("{:?}", status);
|
||||||
|
}
|
||||||
|
|
||||||
println!("Box real PID: {:?}", pid);
|
println!("Box real PID: {:?}", pid);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user