gpt4 book ai didi

rust - 在 Rust 中运行外部进程

转载 作者:行者123 更新时间:2023-11-29 08:30:31 25 4
gpt4 key购买 nike

我看到了这个问题In Rust, how do I invoke a system command and capture its output?但似乎发生了一些变化。那么我现在如何在 Rust 中运行外部进程呢?

最佳答案

您是否尝试过 std::io::process::Command

你可以尝试类似的东西。

let process = match std::io::process::Command::new("ls")
.args(&["-l", "/home/hduser"])
.spawn() {
Ok(process) => process,
Err(err) => panic!("Running process error: {}", err),
};

let output = match process.wait_with_output() {
Ok(output) => output,
Err(err) => panic!("Retrieving output error: {}", err),
};

let stdout = match std::string::String::from_utf8(output.output) {
Ok(stdout) => stdout,
Err(err) => panic!("Translating output error: {}", err),
};

print!("{}", stdout);

您不必生成进程,但这是 Rust 擅长的,所以为什么不呢。 Command::new 返回一个Optionwait_with_output() 返回一个IoResultfrom_utf8 返回一个 Result,所以我使用了一个匹配表达式来解包结果,但是你也可以很容易地使用 .ok().expect("Some descriptive text for error") 而不是匹配表达式。

没有生成和匹配表达式的示例:

let process = std::io::process::Command::new("pwd")
.output()
.ok()
.expect("Failed to execute");
let out = std::string::String::from_utf8(process.output)
.ok()
.expect("Failed to read"));
println!("{}", out);

关于rust - 在 Rust 中运行外部进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com