Struct std::process::ExitStatusError
source · pub struct ExitStatusError(_);
🔬This is a nightly-only experimental API. (
exit_status_error
#84908)Expand description
描述进程失败后的结果
通过 ExitStatus
上的 .exit_ok
方法生成。
Examples
#![feature(exit_status_error)]
use std::process::{Command, ExitStatusError};
fn run(cmd: &str) -> Result<(),ExitStatusError> {
Command::new(cmd).status().unwrap().exit_ok()?;
Ok(())
}
run("true").unwrap();
run("false").unwrap_err();
RunImplementations§
source§impl ExitStatusError
impl ExitStatusError
sourcepub fn code(&self) -> Option<i32>
🔬This is a nightly-only experimental API. (exit_status_error
#84908)
pub fn code(&self) -> Option<i32>
exit_status_error
#84908)从 ExitStatusError
报告退出代码 (如果适用)。
用 Unix 的术语来说,返回值是退出状态:如果进程通过调用 exit
完成,则传递给 exit
的值。
请注意,在 Unix 上,退出状态被截断为 8 位,并且不是来自程序调用到 exit
的值可能是由运行时系统发明的 (通常,例如,255、254、127 或 126)。
在 Unix 上,如果进程被信号终止,它将返回 None
。
如果您想专门处理这种情况,请考虑使用 ExitStatusExt
中的方法。
如果进程通过使用非零值调用 exit
完成,这将返回该退出状态。
如果错误是其他原因,它将返回 None
。
如果进程成功退出 (即通过调用 exit(0)
),则没有 ExitStatusError
。所以 ExitStatusError::code()
的返回值总是非零。
Examples
#![feature(exit_status_error)]
use std::process::Command;
let bad = Command::new("false").status().unwrap().exit_ok().unwrap_err();
assert_eq!(bad.code(), Some(1));
Runsourcepub fn code_nonzero(&self) -> Option<NonZeroI32>
🔬This is a nightly-only experimental API. (exit_status_error
#84908)
pub fn code_nonzero(&self) -> Option<NonZeroI32>
exit_status_error
#84908)将 ExitStatusError
的退出代码 (如果适用) 报告为 NonZero
这与 code()
完全一样,只是它返回一个 NonZeroI32
。
提供普通 code
,返回一个普通整数,因为它通常更方便。
code()
的返回值确实也是非零的; 当您想要非零的类型级别保证时,请使用 code_nonzero()
。
Examples
#![feature(exit_status_error)]
use std::num::NonZeroI32;
use std::process::Command;
let bad = Command::new("false").status().unwrap().exit_ok().unwrap_err();
assert_eq!(bad.code_nonzero().unwrap(), NonZeroI32::try_from(1).unwrap());
Runsourcepub fn into_status(&self) -> ExitStatus
🔬This is a nightly-only experimental API. (exit_status_error
#84908)
pub fn into_status(&self) -> ExitStatus
exit_status_error
#84908)将 ExitStatusError
(back) 转换为 ExitStatus
。
Trait Implementations§
source§impl Clone for ExitStatusError
impl Clone for ExitStatusError
source§fn clone(&self) -> ExitStatusError
fn clone(&self) -> ExitStatusError
返回值的副本。 Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
从
source
执行复制分配。 Read moresource§impl Debug for ExitStatusError
impl Debug for ExitStatusError
source§impl Display for ExitStatusError
impl Display for ExitStatusError
source§impl Error for ExitStatusError
impl Error for ExitStatusError
source§impl ExitStatusExt for ExitStatusError
Available on Unix only.
impl ExitStatusExt for ExitStatusError
Available on Unix only.
source§fn core_dumped(&self) -> bool
fn core_dumped(&self) -> bool
如果进程被一个信号终止,说明它是否丢弃了核心。
source§impl Into<ExitStatus> for ExitStatusError
impl Into<ExitStatus> for ExitStatusError
source§fn into(self) -> ExitStatus
fn into(self) -> ExitStatus
将此类型转换为 (通常是推断的) 输入类型。
source§impl PartialEq<ExitStatusError> for ExitStatusError
impl PartialEq<ExitStatusError> for ExitStatusError
impl Copy for ExitStatusError
impl Eq for ExitStatusError
impl StructuralEq for ExitStatusError
impl StructuralPartialEq for ExitStatusError
Auto Trait Implementations§
impl RefUnwindSafe for ExitStatusError
impl Send for ExitStatusError
impl Sync for ExitStatusError
impl Unpin for ExitStatusError
impl UnwindSafe for ExitStatusError
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
从拥有的值中借用。 Read more