Struct Command

Source
pub struct Command { /* private fields */ }
Expand description

Offers an API similar to std::process::Command.

Implementations§

Source§

impl Command

Source

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}
Source

pub fn args(self, args: &[&str]) -> Self

Panics if any argument contains null bytes.

Source

pub fn layer<P: AsRef<Path>>(self, path: P) -> Self

Adds new read-only OverlayFS layer

Source

pub fn disk_write_tempdir(self) -> Self

Allows disk writes to a temporary directory

Source

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}
Source

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.

Source

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.

Source

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V