7 个版本
0.3.3 | 2024 年 3 月 18 日 |
---|---|
0.3.2 | 2024 年 3 月 18 日 |
0.2.1 | 2024 年 3 月 17 日 |
0.1.0 | 2024 年 3 月 17 日 |
12 在 #sh
每月 下载 38 次
在 btd 中使用
7KB
系统
跨平台 crate,用于轻松运行 shell 命令,类似于 C system
函数。
用法
system
和 system_output
对于只需要系统命令结果的简单用例,可以使用 system
和 system_output
函数。
system
继承自父进程的 stdout、stderr 和 stdin,而 system_output
捕获 stdout 和 stderr,不继承 stdin。
system
的使用示例,
use system::system;
fn main() {
// Prints "Hello, world!"
system("echo Hello, world!").expect("Failed to run command.");
}
system_output
的使用示例,
use system::system_output;
fn main() {
let out = system_output("echo Hello, world!").expect("Failed to run command.");
let stdout = String::from_utf8_lossy(&out.stdout);
#[cfg(target_os = "windows")]
assert_eq!(stdout, "Hello, world!\r\n");
#[cfg(not(target_os = "windows"))]
assert_eq!(stdout, "Hello, world!\n");
}
std::process::Command::系统
对于更复杂的用例,在运行命令之前需要修改底层 Command
,为 Command
实现了 system::System
trait。
该 trait 添加了 Command::system
函数,以创建执行 shell 命令的 Command
。
例如,
use std::process::Command;
use system::System;
fn test() {
let out = Command::system("echo Hello, world!")
.output()
.expect("Failed to run command.");
let stdout = String::from_utf8_lossy(&out.stdout);
#[cfg(target_os = "windows")]
assert_eq!(stdout, "Hello, world!\r\n");
#[cfg(not(target_os = "windows"))]
assert_eq!(stdout, "Hello, world!\n");
}