Как выполнить команду в подоболочке в Rust? - PullRequest
0 голосов
/ 28 января 2020

В 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");

Есть ли способ заставить код выполнить реальную оболочку и запустить его в терминале?

1 Ответ

0 голосов
/ 29 января 2020

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));

Пример был получен отсюда:

Как мне вызвать системную команду в Rust и записать ее вывод?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...