3个不稳定版本
使用旧的Rust 2015
0.2.0 | 2018年2月18日 |
---|---|
0.1.1 | 2017年10月27日 |
0.1.0 | 2017年10月27日 |
在Unix API中排名#788
每月下载46次
24KB
283 行
sysexit
Rust模块,为程序提供退出码。
概要
用法
use std::process;
use sysexit;
let exit_status = process::Command::new("sh")
.arg("-c").arg(format!("exit {}", 74))
.status()
.expect("failed to run sh(1)");
let exit_code = sysexit::from_status(exit_status);
println!("{}", exit_code);
这将输出
i/o error (74)
描述
选择适当的退出值通常很含糊,尽管无法提供一个适用于所有情况的权威汇编,但这个crate试图收集Unix系统上最常识别的退出码。
退出状态介于0和255(含)之间,大于零的代码表示失败。范围125-128是保留给shell特定的状态,包括shell内置命令和复合命令。范围129-154是保留的致命信号,下面解释。
作为基础,它编码了来自OpenBSD(64-78)的[sysexits(3)]的退出码,以及bash(1)使用的退出状态,补充了当命令由致命信号终止时shell创建的代码。当致命信号是一个数字N时,后者遵循bash的策略,使用128 + N作为退出状态。这意味着SIGHUP
(1)信号将被识别为129的退出码。
接口
您可以在https://docs.rs/sysexit上查看完整的API文档。
pub fn from_status(status: std::process::ExitStatus) -> sysexit::Code
将std::process::ExitStatus
转换为sysexit::Code
。
pub fn is_success(status: std::process::ExitStatus) -> bool
确定提供的std::process::ExitStatus
是否成功。
pub fn is_error(status: std::process::ExitStatus) -> bool
确定提供的std::process::ExitStatus
是否不成功。
pub fn is_reserved(n: i32) -> bool
测试提供的退出码是否保留并且有特殊意义。
pub fn is_valid(n: i32) -> bool
测试提供的退出码是否有效,换句话说,它是否在0-255(含)的范围内。
另请参阅
_exit(2), exit(3), [sysexits(3)], bash(1)
历史
这个库基于首次出现在4.0BSD中,供delivermail实用程序使用的sysexits.h
文件,后来被重命名为sendmail(8)。它还进一步扩展了来自bash(1)的致命信号。
您可以通过查阅CHANGES.md文件来了解库的所有显著变更记录。
作者
Eric Allman于1980年发明了sysexits.h
文件。该库的大部分文档基于Joerg Wunsch编写的[sysexits(3)]手册页,该手册页基于Eric的原始注释。函数is_reserved
和is_valid
由Richard Fussenegger编写。Rust crate由Andreas Tolfsen编写。
错误
选择合适的退出值通常是不确定的。
依赖项
~43KB