Rustのls
やfuser
のようなシステムコマンドを呼び出す方法はありますか?その出力をキャプチャするのはどうですか?
std::process::Command
はそれを可能にします。
子プロセスを生成し、マシン上で任意のコマンドを実行するには、複数の方法があります。
ドキュメントからの1つの簡単な例:
use std::process::Command;
Command::new("ls")
.arg("-l")
.arg("-a")
.spawn()
.expect("ls command failed to start");
docs からの非常に明確な例:
use std::process::Command;
let output = Command::new("/bin/cat")
.arg("file.txt")
.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));
assert!(output.status.success());
それは確かに可能です!関連するモジュールは _std::run
_ です。
_let mut options = std::run::ProcessOptions::new();
let process = std::run::Process::new("ls", &[your, arguments], options);
_
ProcessOptions
'標準ファイル記述子 デフォルトはNone
(新しいパイプを作成)で、使用できるのは process.output()
=(たとえば)出力から読み取ります。
コマンドを実行し、実行後にすべての出力を取得する場合は、 そのための_wait_with_output
_があります です。
昨日現在、_Process::new
_はProcess
ではなく_Option<Process>
_を返します。