gpt4 book ai didi

rust - std::process::Command 没有输出

转载 作者:行者123 更新时间:2023-12-03 11:28:22 24 4
gpt4 key购买 nike

我想使用 process::Command 运行 clippy,但它似乎不起作用。
我在此基础上运行了 cargo 构建:

use std::env;
use std::process::Command;
use std::io;
use std::io::Write;

fn main() {
let pwd = env::current_dir();
match pwd {
Ok(data) => {
println!("{}", &data.display());
let output = Command::new("cargo")
.arg("clippy")
.output()
.expect("there was an error");

io::stdout().write_all(&output.stdout).unwrap();
},
Err(_) => (),
}
}
而不是在另一个 Rust 项目的根目录中执行二进制文件。但我似乎没有得到任何输出。我试过更换 cargo clippyls那运行正常。正确列出该目录中的所有文件。
有任何想法吗?

最佳答案

就像麦卡顿指出的那样cargo clippy不向标准输出打印任何内容。
只到标准错误。因此,添加 stderr 的输出会打印更多文本:

use std::env;
use std::process::Command;
use std::io;
use std::io::Write;

fn main() {
let pwd = env::current_dir();
match pwd {
Ok(data) => {
println!("{}", &data.display());
let output = Command::new("cargo")
.arg("clippy")
.output()
.expect("there was an error");

io::stdout().write_all(&output.stdout).unwrap();
// add this line to print stderr output too
io::stderr().write_all(&output.stderr).unwrap();
},
Err(_) => (),
}
}
在上面的例子中,我们写了 output 的 stderr 输出到我们的应用程序标准错误。
output.stderr -> app.stderr:
io::stderr().write_all(&output.stderr).unwrap();
如果我们想将其写入标准输出,我们可以使用。
output.stderr -> app.stdout:
io::stdout().write_all(&output.stderr).unwrap();

关于rust - std::process::Command 没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66319382/

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