Struct std::process::ExitStatusError[][src]

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();
Run

Implementations

🔬 This is a nightly-only experimental API. (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));
Run
🔬 This is a nightly-only experimental API. (exit_status_error #84908)

ExitStatusError 的退出代码 (如果适用) 报告为 NonZero

这与 code() 完全一样,只是它返回一个 NonZeroI32

提供普通 code,返回一个普通整数,因为它通常更方便。 code() 的返回值确实也是非零的; 当您想要非零的类型级别保证时,请使用 code_nonzero()

Examples

#![feature(exit_status_error)]
use std::convert::TryFrom;
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());
Run
🔬 This is a nightly-only experimental API. (exit_status_error #84908)

ExitStatusError (back) 转换为 ExitStatus

Trait Implementations

返回值的副本。 Read more

source 执行复制分配。 Read more

使用给定的格式化程序格式化该值。 Read more

使用给定的格式化程序格式化该值。 Read more

此错误的下级来源 (如果有)。 Read more

🔬 This is a nightly-only experimental API. (backtrace #53487)

返回发生错误的栈回溯 (如果有)。 Read more

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

This is supported on Unix only.

wait 的原始底层整数状态值创建一个新的 ExitStatusExitStatusError Read more

如果进程被一个信号终止,则返回该信号。 Read more

🔬 This is a nightly-only experimental API. (unix_process_wait_more #80695)

如果进程被一个信号终止,说明它是否丢弃了 core。

🔬 This is a nightly-only experimental API. (unix_process_wait_more #80695)

如果该进程被信号停止,则返回该信号。 Read more

🔬 This is a nightly-only experimental API. (unix_process_wait_more #80695)

进程是否从停止状态继续。 Read more

🔬 This is a nightly-only experimental API. (unix_process_wait_more #80695)

返回基础的原始 wait 状态。 Read more

执行转换。

此方法测试 selfother 值是否相等,并由 == 使用。 Read more

此方法测试 !=

Auto Trait Implementations

Blanket Implementations

获取 selfTypeIdRead more

从拥有的值中一成不变地借用。 Read more

从拥有的值中借用。 Read more

执行转换。

执行转换。

获得所有权后的结果类型。

通常通过克隆从借用数据中创建拥有的数据。 Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into #41263)

recently added

使用借来的数据来替换拥有的数据,通常是通过克隆。 Read more

将给定值转换为 StringRead more

发生转换错误时返回的类型。

执行转换。

发生转换错误时返回的类型。

执行转换。