pub struct Command { /* private fields */ }
Expand description
Offers an API similar to std::process::Command
.
Implementations§
Source§impl Command
impl Command
Sourcepub fn new<P: AsRef<Path>>(root_fs: P, path: &str) -> Self
pub fn new<P: AsRef<Path>>(root_fs: P, path: &str) -> Self
Command path inside the isolated filesystem. Panics if path contains null bytes.
Examples found in repository?
examples/shell.rs (line 11)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4 let d = current_dir().unwrap();
5
6 let rootfs = d.join("rootfs/");
7 let writedir = d.join("write/");
8
9 std::fs::create_dir_all(&writedir)?;
10
11 let mut child = isolated::Command::new(rootfs, "/bin/sh")
12 .disk_write_to(writedir)
13 .spawn()?;
14
15 child.wait()?;
16 Ok(())
17}
Sourcepub fn disk_write_tempdir(self) -> Self
pub fn disk_write_tempdir(self) -> Self
Allows disk writes to a temporary directory
Sourcepub fn disk_write_to<P: AsRef<Path>>(self, path: P) -> Self
pub fn disk_write_to<P: AsRef<Path>>(self, path: P) -> Self
Allows disk writes to a temporary directory
Examples found in repository?
examples/shell.rs (line 12)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4 let d = current_dir().unwrap();
5
6 let rootfs = d.join("rootfs/");
7 let writedir = d.join("write/");
8
9 std::fs::create_dir_all(&writedir)?;
10
11 let mut child = isolated::Command::new(rootfs, "/bin/sh")
12 .disk_write_to(writedir)
13 .spawn()?;
14
15 child.wait()?;
16 Ok(())
17}
Sourcepub fn hook_pre_pivot(self, hook: Box<dyn FnOnce() -> Result<()>>) -> Self
pub fn hook_pre_pivot(self, hook: Box<dyn FnOnce() -> Result<()>>) -> Self
Hook is called just before pivot_root, after fork. If multiple hooks are registered, they will be called in order. If any hook returns an error, no more hooks will be called, and the process will not be started.
Sourcepub fn hook_pre_exec(self, hook: Box<dyn FnOnce() -> Result<()>>) -> Self
pub fn hook_pre_exec(self, hook: Box<dyn FnOnce() -> Result<()>>) -> Self
Hook is called just before exec, after fork and pivot_root. If multiple hooks are registered, they will be called in order. If any hook returns an error, no more hooks will be called, and the process will not be started.
Sourcepub fn spawn(self) -> Result<Process>
pub fn spawn(self) -> Result<Process>
Examples found in repository?
examples/shell.rs (line 13)
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4 let d = current_dir().unwrap();
5
6 let rootfs = d.join("rootfs/");
7 let writedir = d.join("write/");
8
9 std::fs::create_dir_all(&writedir)?;
10
11 let mut child = isolated::Command::new(rootfs, "/bin/sh")
12 .disk_write_to(writedir)
13 .spawn()?;
14
15 child.wait()?;
16 Ok(())
17}
Auto Trait Implementations§
impl Freeze for Command
impl !RefUnwindSafe for Command
impl !Send for Command
impl !Sync for Command
impl Unpin for Command
impl !UnwindSafe for Command
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more