cargo new namecargo build编译至linux运行环境:
cargo build --release --target=x86_64-unknown-linux-musl编译并运行项目:
cargo run检查项目是否能通过编译,不产生编译后的可执行文件:
cargo check使用rust的标准库:std::process::Command
地址:https://rustwiki.org/zh-CN/std/process/struct.Command.html
获取命令执行结果的4种方法,完整代码:
use std::process::Command;
fn main() {
let shell = CMD { cmd: String::from("ping www.baidu.com -c 2") };
// 示例1:获取命令执行结果bool
if shell.command_bool() {
println!("命令执行成功");
}
// 示例2:获取命令输出和执行结果bool
let (output, err) = shell.command();
if !err {
println!("命令执行失败:{}", output);
}
// 示例3,只获取命令的输出,不管成功和失败
let output = shell.command_string();
println!("命令执行结果:{}", output);
}
struct CMD {
cmd: String, // 完整的shell命令
}
impl CMD {
// 执行shell命令,获取执行结果与输出
fn command(&self) -> (String, bool) {
let shell = Command::new("sh").arg("-c").arg(&self.cmd).output().expect("命令执行失败");
if !shell.status.success() {
let stderr = format!("{}", String::from_utf8_lossy(&shell.stderr));
return (stderr, false);
}
let stdout = format!("{}", String::from_utf8_lossy(&shell.stdout));
return (stdout, true);
}
// 执行shell命令,获取执行输出
fn command_string(&self) -> String {
let shell = Command::new("sh").arg("-c").arg(&self.cmd).output().expect("命令执行失败");
if !shell.status.success() {
let stderr = format!("{}", String::from_utf8_lossy(&shell.stderr));
return stderr;
}
let stdout = format!("{}", String::from_utf8_lossy(&shell.stdout));
return stdout;
}
// 执行shell命令,只获取执行结果bool值
fn command_bool(&self) -> bool {
let shell = Command::new("sh").arg("-c").arg(&self.cmd).output().expect("命令执行失败");
return shell.status.success();
}
// 执行shell命令,获取实时输出
#[allow(dead_code)]
fn command_output(&self) {
println!("待完成")
}
}本文发布于 upxos.com,著作权归 upX / upxos.com 所有。欢迎非商业场景转载或引用,请保留原文链接并注明出处;商业使用、改编发布或批量转载,请先联系 upX 获得书面授权。