Enum unshare::Error [−][src]
pub enum Error { NixError, UnknownError, CreatePipe(i32), Fork(i32), Exec(i32), Chdir(i32), ParentDeathSignal(i32), PipeError(i32), WaitError(i32), StdioError(i32), SetUser(i32), ChangeRoot(i32), SetIdMap(i32), AuxCommandExited(i32), AuxCommandKilled(i32), SetPGid(i32), SetNs(i32), CapSet(i32), BeforeUnfreeze(Box<Error + Send + Sync + 'static>), BeforeExec(i32), }
Error runnning process
This type has very large number of options and it's enum only to be compact. Probably you shouldn't match on the error cases but just format it for user into string.
Variants
NixError
Unknown nix error
Frankly, this error should not happen when running process. We just
keep it here in case nix
returns this error, which should not happen.
UnknownError
Some invalid error code received from child application
CreatePipe(i32)
Error happened when we were trying to create pipe. The pipes used for
two purposes: (a) for the process's stdio (Stdio::pipe()
or
Stdio::null()
), (b) internally to wake up child process and return
error back to the parent.
Fork(i32)
Error when forking/cloning process
Exec(i32)
Error when running execve() systemcall
Chdir(i32)
Error when setting working directory specified by user
ParentDeathSignal(i32)
Unable to set death signal (probably signal number invalid)
PipeError(i32)
Error reading/writing through one of the two signal pipes
WaitError(i32)
Error waiting for process (for some functions only, for example
Command::status()
). It probably means someone already waited for
the process, for example it might be other thread, or signal handler.
StdioError(i32)
Error setting up stdio for process
SetUser(i32)
Could not set supplementary groups, group id or user id for the process
ChangeRoot(i32)
Error changing root, it explains chroot
, pivot_root
system calls
and setting working directory inside new root. Also includes unmounting
old file system for pivot_root case.
SetIdMap(i32)
Error setting uid or gid map. May be either problem running
newuidmap
/newgidmap
command or writing the mapping file directly
AuxCommandExited(i32)
Auxillary command failed
There are two auxillary commands for now: newuidmap
and newgidmap
.
They run only when uid mappings (user namespaces) are enabled.
Note that failing to run the binary results to SedIdMap(sys_errno)
,
this error contains status code of command that was succesfullly
spawned.
AuxCommandKilled(i32)
Auxillary command was killed by signal
Similar to AuxCommandExited
but when command was killed
SetPGid(i32)
Error when calling setpgid function
SetNs(i32)
Error when calling setns syscall
CapSet(i32)
Error when calling capset syscall
BeforeUnfreeze(Box<Error + Send + Sync + 'static>)
Before unfreeze callback error
BeforeExec(i32)
Before exec callback error
Methods
impl Error
[src]
impl Error
pub fn raw_os_error(&self) -> Option<i32>
[src]
pub fn raw_os_error(&self) -> Option<i32>
Similarly to io::Error
returns bare error code
Trait Implementations
impl Debug for Error
[src]
impl Debug for Error
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl StdError for Error
[src]
impl StdError for Error
fn description(&self) -> &'static str
[src]
fn description(&self) -> &'static str
This method is soft-deprecated. Read more
fn cause(&self) -> Option<&Error>
1.0.0[src]
fn cause(&self) -> Option<&Error>
The lower-level cause of this error, if any. Read more
impl Display for Error
[src]
impl Display for Error