如何在Rust的子外壳中执行命令?

时间:2020-01-28 19:45:54

标签: rust command subshell

在Python中,我可以做os.system("pip install bs4")。 Rust中有等效的东西吗?我见过std::process::Command,但这似乎每次都失败:

use std::process::Command;
Command::new("pip")
    .arg("install")
    .arg("bs4")
    .spawn()
    .expect("pip failed");

有什么方法可以让代码执行真正的shell并在终端中运行它们?

1 个答案:

答案 0 :(得分:-2)

Pip需要root权限,因此请确保以足够的权限运行二进制文件。

以下内容对我有用:

use std::process::Command;
Command::new("pip")
    .args(&["install", "bs4"])
    .spawn()
    .expect("failed to execute process");

使用它来分析故障:

use std::process::Command;
let output = Command::new("pip")
    .args(&["install", "bs4"])
    .output()
    .expect("failed to execute process");

println!("status: {}", output.status);
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
println!("stderr: {}", String::from_utf8_lossy(&output.stderr));

示例源自于此:

How do I invoke a system command in Rust and capture its output?