testing UTS

This commit is contained in:
Masato Imai
2024-10-21 03:18:08 +00:00
parent d2078107a1
commit 1c187b3bd1
2 changed files with 25 additions and 2 deletions

View File

@ -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"] }

View File

@ -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);
} }