diff --git a/kernel/scheme/sys/context.rs b/kernel/scheme/sys/context.rs index 3f179b3..a67b62d 100644 --- a/kernel/scheme/sys/context.rs +++ b/kernel/scheme/sys/context.rs @@ -5,7 +5,7 @@ use context; use syscall::error::Result; pub fn resource() -> Result> { - let mut string = format!("{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<8}{}\n", + let mut string = format!("{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<8}{:<6}{}\n", "PID", "PPID", "UID", @@ -13,6 +13,7 @@ pub fn resource() -> Result> { "STAT", "CPU", "MEM", + "SNS", "NAME"); { let contexts = context::contexts(); @@ -82,7 +83,7 @@ pub fn resource() -> Result> { let name_bytes = context.name.lock(); let name = str::from_utf8(&name_bytes).unwrap_or(""); - string.push_str(&format!("{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<8}{}\n", + string.push_str(&format!("{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<8}{:<6}{}\n", context.id.into(), context.ppid.into(), context.euid, @@ -90,6 +91,7 @@ pub fn resource() -> Result> { stat_string, cpu_string, memory_string, + context.scheme_ns.into(), name)); } } diff --git a/programs/contain/src/main.rs b/programs/contain/src/main.rs index de94324..8ec63ba 100644 --- a/programs/contain/src/main.rs +++ b/programs/contain/src/main.rs @@ -22,7 +22,7 @@ pub fn main() { syscall::setns(&name_ptrs).unwrap(); - println!("Entering container: {}", command); + println!("Container enter: {}", command); let err = Command::new(command).exec(); @@ -31,6 +31,16 @@ pub fn main() { let mut status = 0; syscall::waitpid(pid, &mut status, 0).unwrap(); - println!("Exiting container: {:X}", status); + loop { + let mut c_status = 0; + let c_pid = syscall::waitpid(0, &mut c_status, syscall::WNOHANG).unwrap(); + if c_pid == 0 { + break; + } else { + println!("Container zombie {}: {:X}", c_pid, c_status); + } + } + + println!("Container exited: {:X}", status); } }